#include <iostream> #define MAXN 1002using namespace Std;int T[MAXN],X[MAXN],Y[MAXN],PAR[MAXN],SHUGAO[MAXN]; void init (int n) {int i; for (i=0;i<n;i++) {par[i]=i;//At first these nodes did not contact shugao[i]=0; }}int f_ind (int x) {if (par[x]==x) {return x; }else{return Par[x]=f_ind (Par[x]); }}bool Same (int x,int y) {return f_ind (x) ==f_ind (y);} void Unite (int x,int y) {x=f_ind (x); Y=f_ind (y); if (x==y) {return; } if (Shugao[x]<shugao[y]) {par[x]=y; } else {par[y]=x; if (Shugao[x]==shugao[y]) {shugao[x]++; }}}int Main () {int i,n,k,x,y,t; CIN >> n>>k; for (i=0;i<k;i++)//input K-group data, range between n {cin>>t[i]>>x[i]>>y[i]; } init (3*n); int ans=0;//record error message for (i=0;i<k;i++) {x=x[i],y=y[i],t=t[i]; if (x<0| | y>=n| | y>n-1| | y<0) {ans++; Continue; } if (t==1) {if (Same (x,y+n) | | | Same (X,y+2*n)) {ans++; } else {unite (x, y); Unite (X+N,Y+N); Unite (X+2*N,Y+2*N); }} else {if (same (x[i],y[i)) | | Same (X[i],y[i]+2*n)) {ans++; } else {unite (x,y+n); Unite (X+N,Y+2*N); Unite (X+2*N,Y); }}} Cout<<ans<<endl;}
poj1182 test data too, but a no, put it here for the time being, and look at it later.