wgraph g; int a[1d5],b[],y[],r[],u[]; void f(int i){ rep(j,g.es[i]){ int k=g.edge[i][j]; if(u[k]){ if(r[i]^r[k]^g.cost[i][j]){ wt(-1); exit(0); } }else{ u[k]=1; r[k]=r[i]^g.cost[i][j]; f(k); } } } { int @n,@m; rd((a--,b--,y)(m)); g.setEdge(n,m,a,b,y); rep(i,n) if(!u[i]) u[i]=1, f(i); wtLn(r(n)); }