#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
const int N=200500;
int father[N];
int enemy[N];
int n,m;
void init()
{
for(int i=0;i<=n;i++)
{
father[i]=i;
enemy[i]=0;
}
}
int find(int x)
{
if(father[x]!=x)
{
father[x]=find(father[x]);
}
return father[x];
}
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%d%d",&n,&m);
init();
int a,b;
char ch;
int fx,fy;
for(int di=0;di<m;di++)
{
getchar();
scanf("%c%d%d",&ch,&a,&b);
if(ch=='D')
{
fx=find(a);
fy=find(b);
if(enemy[fx]==0&&enemy[fy]==0)
{
enemy[fx]=fy;
enemy[fy]=fx;
}
else if(enemy[fx]==0&&enemy[fy]!=0)
{
father[fx]=enemy[fy];
}
else if(enemy[fx]!=0&&enemy[fy]==0)
{
father[fy]=enemy[fx];
}
else
{
father[fx]=enemy[fy];
father[enemy[fx]]=fy;
}
}
else
{
fx=find(a);
fy=find(b);
if(fx==fy)
{
printf("In the same gang.\n");
continue;
}
if(enemy[fx]==fy&&enemy[fy]==fx)
{
printf("In different gangs.\n");
continue;
}
else
{
printf("Not sure yet.\n");
continue;
}
}
}
}
return 0;
}
J - Find them, Catch them(并查集)
最新推荐文章于 2017-09-05 20:52:37 发布