总结
注意负数的处理
注意多组测试案例,自己当时没注意,HDU居然给我显示的是WA,而不是TLE
其他也就是叶子结点到根距离的处理
const int N=5e4+5;
int fat[N],dis[N];
int find(int x)
{
if(fat[x]==x)
return x;
int root=find(fat[x]);
dis[x]+=dis[fat[x]];
return fat[x]=root;
}
int mod(int x)
{
return (x%300+300)%300;
}
signed main()
{
IOS;
//file();
int n,m;
while(cin>>n>>m)
{
for(int i=1; i<=n; i++)
fat[i]=i,dis[i]=0;
int ans=0;
while(m--)
{
int a,b,x;
cin>>a>>b>>x;
int ta=find(a);
int tb=find(b);
if(ta==tb)
{
int num=mod(dis[b]-dis[a]);
if(num!=x%300)
ans++;
}
else
{
fat[tb]=ta;
dis[tb]=dis[a]+x-dis[b];
}
}
cout<<ans<<endl;
}
return 0;
}