超时了,不能用Scanner,得用BufferReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class POJ_1703 {
static int[] par=new int[300005];
static int[] rank=new int[300005];
static void init(int n){
for (int i = 0; i < n; i++) {
par[i]=i;
rank[i]=0;
}
}static int find(int x){
if(par[x]==x){
return x;
}else{
return par[x]=find(par[x]);
}
}
static void unite(int x,int y){
x=find(x);
y=find(y);
if(x==y)return;
if(rank[x]<rank[y]){
par[x]=y;
}else{
par[y]=x;
if(rank[x]==rank[y])rank[x]++;
}
}
static boolean same(int x,int y){
return find(x)==find(y);
}
static int t,n,m;
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
t=Integer.parseInt(br.readLine());
while(t-->0){
String[] s1=br.readLine().split(" ");
n=Integer.parseInt(s1[0]);
m=Integer.parseInt(s1[1]);
init(2*n);
for (int i = 0; i < m; i++) {
String[] s=br.readLine().split(" ");
char c=s[0].charAt(0);
int p=Integer.parseInt(s[1]);
int q=Integer.parseInt(s[2]);
if(c=='D'){
unite(p,q+n);
unite(p+n,q);
}else{
if(same(p,q)){
System.out.println("In the same gang.");
}
else if(same(p,q+n)||same(p+n,q)){
System.out.println("In different gangs.");
}else{
System.out.println("Not sure yet.");
}
}
}
}
}
}