比赛 20141105 评测结果 WAWAWAWAWAWAWAWAWAWA
题目名称 月考统计 最终得分 50
用户昵称 mikumikumi 运行时间 0.019 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2014-11-05 11:57:09
显示代码纯文本
#include<fstream>
using namespace std;
ifstream input("ExamStat.in");
ofstream output("ExamStat.out");
int pan=0,a,b,c,father[1010]={0},high[1010]={0},n,m;
int find(int i)
{
	int t;
	if(i!=father[i])
	{
		t=father[i];
		father[i]=find(father[i]);
		high[i]+=high[t];
	}
	return father[i];
}
int set(int i)
{
	father[i]=i;
	return 0;
}
int link(int i,int j)
{
	father[j]=i;
	high[j]=min(high[a]+c,c);
	return 0;
}
int main()
{
	int i;
	input>>n>>m;
	for(i=1;i<=1000;i++)
		set(i);
	for(i=1;i<=m;i++)
	{
		int aa,bb;
		input>>a>>b>>c;
		aa=find(a);
		bb=find(b);
		if(aa==bb)
		{
		if(father[a]==b&&high[a]<0&&c>0)
		{
			output<<"SOMEONE LAY!";
			pan++;
			break;
		}
		else
			high[b]=min(high[a]+c,c);
		}
		else
			link(aa,bb);
	}
	if(pan==0)
	for(i=1;i<=n;i++)
	{
		if(high[i]<0)
			output<<-high[i]<<" ";
		else
			output<<0<<" ";
	}
	input.close();
	output.close();
	return 0;
}