比赛 “Asm.Def战记之拉格朗日点”杯 评测结果 WWWWWWWWWW
题目名称 Asm.Def的打击序列 最终得分 0
用户昵称 WAHT 运行时间 0.006 s
代码语言 C++ 内存使用 0.59 MiB
提交时间 2015-11-04 11:57:57
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cstdlib>
#include<cmath>
using namespace std;
#define ll long long
int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(ch>'9'||ch<'0'){ if(ch=='-') f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){ x=x*10+ch-'0';ch=getchar();}
	return x*f;
}

int n,m,c,map[300][300],ru[300];
int q[300],head=0,tail=0;
int oo;
bool vis[300];
int f[300];
void init()
{
	n=read(),m=read(),c=read();
	memset(map,10,sizeof(map));
	oo=map[0][0];
	
	for(int i=1;i<=n;i++)
	{
		int a=0,b=0,v=0;
		scanf("%d%d%d",&a,&b,&v);
		map[a][b]=min(map[a][b],v);
		ru[b]++;
	}

	for(int i=1;i<=n;i++)
	{	
		if(!ru[i]){ f[i]=c; continue;}
		int k=0;
		for(int j=1;j<=n;j++)
			{if(map[j][i]<c) k=1;}
		if(!k) f[i]=c;
	}
}	
void dfs(int x)
{
	for(int i=1;i<=n;i++)
		if(!vis[i]&&map[x][i]!=oo)
		{	
			f[i]=map[x][i];
			vis[i]=1;
			dfs(i);
			return;
		}
}
void work()
{
	for(int i=1;i<=n;i++)
		if(!vis[i])
		{	f[i]=c,vis[i]=1;dfs(i);}
		
	int ans=0;
	for(int i=1;i<=n;i++)
		ans+=min(f[i],c);
	
	cout<<ans<<endl;
}

int main()
{
	freopen("asm_lis.in","r",stdin);
	freopen("asm_lis.out","w",stdout);
	
	init();
	work();
	return 0;
}