哪里有问题?都RE了
查看原帖
哪里有问题?都RE了
728741
ayst0001楼主2024/7/9 12:08
#include<bits/stdc++.h>
using namespace std;
long long fa[31000];
long long son[31000];
long long  n,q,w,aa,bb;
char s;
int find(int x){
	if(x==fa[x]){
		return x;
	}
	else{
		find(fa[x]);
	}
}
int findson(int x){
	if(x==son[x]){
		return x;
	}
	else{
		findson(son[x]);
	}
}
int un(int x,int y){
	int a=find(x);
	int b=findson(y);
	fa[find(x)]=findson(y);
	son[b]=a;  
}
int main( ){
	cin>>n;
	for(int i=1;i<=30000;i++){
		fa[i]=i;
		son[i]=i;
	}
//	un(1,2);
//	un(1,3);
	for(int i=1;i<=n;i++){
		cin>>s>>q>>w;
		aa=0;
		bb=0;
		if(s=='M') un(q,w);
		if(s=='C'){
			if(find(q)==find(w)){
				int a=q;
				int b=w;
				while(fa[a]!=a){
					aa++;
					a=fa[a];
				}
				while(fa[b]!=b){
					bb++;
					b=fa[b];
				}
				cout<<abs(aa-bb)-1;
			}
			else cout<<-1;

		}
	}
	
	return 0;
} 
2024/7/9 12:08
加载中...