标签:合并 ++ string set == 需要 异或 数组 操作
#include"stdio.h" #include"string.h" int val[105000]; int father[105000]; int getfather(int k){ if (k==father[k]) return k; int tmp=father[k]; father[k]=getfather(father[k]); val[k]=val[k]^val[tmp]; return father[k]; } int main(){ int n,m,i,e,t,xx,yy,a,b,x,y,k,tmp; int sign=0; scanf("%d %d",&n,&m); memset(val,0,sizeof(val)); for (i=0;i<=n;i++) father[i]=i; for (e=1;e<=m;e++){ scanf("%d %d %d",&x,&y,&k); x--; if (x>y) { tmp=x;x=y;y=tmp; } xx=getfather(x); yy=getfather(y); a=val[x]; b=val[y]; if (xx!=yy){ father[yy]=xx; val[yy]=k^a^b; }else { if ((a^b)==k) ; else {sign=1;printf("%d\n",e);} } } if (sign==0) printf("-1\n"); }
标签:合并 ++ string set == 需要 异或 数组 操作
原文地址:https://www.cnblogs.com/nowheretrix/p/9004557.html