-
Find them, Catch them
- POJ - 1703
-
#include<stdio.h> #include<cstring> using namespace std; #define maxn 2222 int n,m,x,y,T; struct node { int pos,same; } xre,yre; int fa[maxn*1000]; bool ans[maxn]; char str; node fond(int x) { node ret; if(fa[x]==0) { ret.pos=x; ret.same=true; return ret; } if(fa[x]>0) { ret=fond(fa[x]); if(ret.same)fa[x]=ret.pos; else fa[x]=-ret.pos; return ret; } ret=fond(-fa[x]); if(ret.same)fa[x]=-ret.pos; else fa[x]=ret.pos; ret.same=!ret.same; return ret; } int main() { scanf("%d",&T); for(int t=1; t<=T; t++) { scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) fa[i]=0; while(m--) { getchar(); scanf("%c",&str); scanf("%d%d",&x,&y); if(str=='D') { xre=fond(x); yre=fond(y); if(xre.pos!=yre.pos) { if(xre.same==yre.same) fa[xre.pos]=-yre.pos; else fa[xre.pos]=yre.pos; } } if(str=='A') { xre=fond(x); yre=fond(y); if(xre.pos!=yre.pos) printf("Not sure yet.\n"); else { if(xre.same==yre.same) printf("In the same gang.\n"); else printf("In different gangs.\n"); } } } } return 0; }
Find them, Catch them -种类并查
最新推荐文章于 2023-05-29 13:28:18 发布