标签:
//1085422276 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<queue> #include<cmath> #include<map> #include<bitset> #include<set> #include<vector> using namespace std ; typedef long long ll; #define mem(a) memset(a,0,sizeof(a)) #define meminf(a) memset(a,127,sizeof(a)); #define memfy(a) memset(a,-1,sizeof(a)) #define TS printf("111111\n"); #define FOR(i,a,b) for( int i=a;i<=b;i++) #define FORJ(i,a,b) for(int i=a;i>=b;i--) #define READ(a,b,c) scanf("%d%d%d",&a,&b,&c) #define mod 1000000007 #define maxn 106 inline ll read() { ll x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘) { if(ch==‘-‘)f=-1; ch=getchar(); } while(ch>=‘0‘&&ch<=‘9‘) { x=x*10+ch-‘0‘; ch=getchar(); } return x*f; } //**************************************** int n,m,parent[maxn],v[maxn]; void init() { FOR(i,0,n)parent[i]=i;mem(v); } int finds(int x) { if(x==parent[x])return x; int t=parent[x]; parent[x]=finds(parent[x]); v[x]+=v[t]; return parent[x]; } int main() { int T=read(); while(T--) { n=read(); m=read(); init(); int flag=0,x,y,w; FOR(i,1,m) { scanf("%d%d%d",&x,&y,&w); int fx=finds(x-1); int fy=finds(y); if(fx!=fy) { parent[fx]=fy; v[fx]=v[y]-v[x-1]+w; }else if(v[x-1]-v[y]!=w)flag=1; } if(flag)printf("false\n"); else printf("true\n"); } return 0; }
BZOJ1202 [HNOI2005]狡猾的商人 并查集维护前缀和
标签:
原文地址:http://www.cnblogs.com/zxhl/p/4805934.html