。。。
和 poj 1182 食物链 差不多。。
http://blog.csdn.net/u010489389/article/details/9321583
#include<stdio.h>
#include<string.h>
int n,m;
int f[100010];
int d[100010];
int root(int p)
{
if(f[p]==-1) return p;
else
{
int fa=f[p];
f[p]=root(f[p]);
d[p]=(d[p]+d[fa])%2;
return f[p];
}
}
void merge(int a,int b)
{
int aa=root(a);
int bb=root(b);
f[aa]=bb;
d[aa]=(d[b]-d[a]+1)%2;
}
int main()
{
int t;
scanf("%d",&t);
int i,j,k;
int a,b;
char ch[5];
while(t--)
{
scanf("%d%d",&n,&m);
memset(f,-1,sizeof(f));
memset(d,0,sizeof(d));
while(m--)
{
scanf("%s%d%d",ch,&a,&b);
if(ch[0]=='A')
{
if(root(a)!=root(b))
printf("Not sure yet.\n");
else
{
if(d[a]==d[b])
printf("In the same gang.\n");
else
printf("In different gangs.\n");
}
}
else
{
if(root(a)!=root(b))
merge(a,b);
}
}
}
}