MnZn刚学带权并查集,球助
查看原帖
MnZn刚学带权并查集,球助
313716
EgLund楼主2021/1/31 17:39

Wa 11pts

#include<iostream>
using namespace std;
int ttt;
int n,m;
int fa[131],val[131];
int findfa(int x){if(fa[x]!=x){val[x]+=val[fa[x]];fa[x]=findfa(fa[x]);}return fa[x];}
int main()
{
	cin>>ttt;
	while(ttt--)
	{
		bool youjie=1;
		cin>>n>>m;
		for(int i=0;i<=n;i++)fa[i]=i,val[i]=0;
		for(int i=1;i<=m;i++)
		{
			int x,y,v;
			cin>>x>>y>>v;
			if(youjie)//if solution is declared to be no,just read the datas but do not calculate
			{
				x--;
				int X=findfa(x),Y=findfa(y);
				if(X!=Y)
				{
					val[Y]=val[x]-val[y]-v;fa[Y]=X;
				}
				else
				{
					if(val[x]-val[y]!=v)youjie=0;
				}
			}
		}
		cout<<(youjie?"true":"false")<<endl;
	}
}
2021/1/31 17:39
加载中...