我的程序是:
#include<bits/stdc++.h>
using namespace std;
int size[1000010],f[1000010],d[1000010];
int find(int x){
if(f[x]==x){
return x;
}
int t1=f[x];
int t2=find(t1);
d[x]+=d[t1];
return f[x]=t2;
}
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=1000000;++i){
f[i]=i;
size[i]=1;
}
for(int i=1;i<=n;++i){
char c;
int x,y;
cin>>c>>x>>y;
int fx=find(x),fy=find(y);
if(c=='M'){
f[fx]=y;
d[fx]=size[fy];
size[fy]+=size[fx];
size[fx]=0;
}else{
if(fx!=fy){
printf("-1\n");
}else{
printf("%d\n",abs(d[x]-d[y])-1);
}
}
}
return 0;
}
使用编译选项 -O2 -std=C++14 -static 进行提交,获得 11 分,请大佬帮忙,谢谢。
提交记录 RunId :
R136338850 。