这是一道并查集的问题
要完成的是合并以及2个数是否在一个集合内
我们通过头指针的方式来给每个数字一个地址
如果合并的话就给他们同一指针
java代码如下
class e{
static int p[];
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
p=new int [n+1];
for(int i=1;i<p.length;i++) {
p[i]=i;
}
while(m–!=0) {
String s=in.next();
int a=in.nextInt();
int b=in.nextInt();
if(s.charAt(0)==’M’) {
p[find(a)]=find(b);
}else {
if(p[find(a)]==p[find(b)]) {
System.out.println(“Yes”);
}else {
System.out.println(“No”);
}
}
}
}
static int find(int x) {
if(p[x]!=x) {
p[x]=find(p[x]);
}
return p[x];
}
}