求助
查看原帖
求助
1073741
UKE_bound楼主2025/1/24 15:20
#include<bits/stdc++.h>
using namespace std;
const int N=3e4+5;
int f[N],dis[N],num[N];
int find(int x){
	if(f[x]==x){
		return x;
	}
	int t=find(x);
	dis[x]+=dis[f[x]];
	return f[x]=t;
}
int main(){
	for(int i=1;i<=30005;i++){
		f[i]=i;
		num[i]=1;
	}
	int t;
	cin>>t;
	while(t--){
		char p;
		int x,y;
		cin>>p>>x>>y;
		int fx=find(x); 
		int fy=find(y); 
		if(p=='M'){
			dis[fx]+=num[fy];
			f[fx]=fy;
			num[fy]+=num[fx];
			num[fx]=0;
		}else{
			if(fx!=fy){
				cout<<"-1\n";
			}else{
				cout<<abs(dis[x]-dis[y])-1;
			}
		}
	}
	return 0;
}
2025/1/24 15:20
加载中...