#include <iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int T,n,m,par[200005],rk[200005];
void inital(int &n)
{
for(int i=0;i<=2*n;i++)
{
par[i]=i;
rk[i]=0;
}
}
int f(int x)
{
if(x==par[x])
return x;
else
return par[x]=f(par[x]);
}
void unite(int x,int y)
{
x=f(x);
y=f(y);
if(x==y)
return;
if(rk[x]<rk[y])
{
par[x]=y;
}
else
{
par[y]=x;
if(rk[x]==rk[y])
rk[x]++;
}
}
bool same(int x,int y)
{
return f(x)==f(y);
}
int main()
{
cin>>T;
while(T--)
{
scanf("%d%d%*c",&n,&m);
inital(n);
while(m--)
{
char ch;
int a,b;
scanf("%c%d%d%*c",&ch,&a,&b);
a--;b--;
if(ch=='D')
{
unite(a,b+n);
unite(a+n,b);
}
else
{
if(same(a,b+n)||same(a+n,b))
printf("In different gangs.\n");
else if(same(a,b)||same(a+n,b+n))
printf("In the same gang.\n");
else
printf("Not sure yet.\n");
}
}
}
return 0;
}
TLE了两次,原因在于用了cin,本以为数据不会很多的。