比赛 |
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;
}