int c[2d5],z; graph g; int f(int i,int p){ int r=!c[i]; rep[g.edge[i]](j,g.es[i]){ if(j!=p){ r^=f(j,i); } } z+=r; return r; } { int@n,a[n-1],b[n-1]; rd((a--,b--)(n-1),c(n)); g.setEdge(n,n-1,a,b); int r=f(0,0); wt(r?-1:z); }