改了以后的这个55pts~~555~~
```#include<iostream>
using namespace std;
int pre[30005];
int ran[30005];
int frn[30005];
int bak[30005];
void Merge(int x,int y)
{
int sx = x,fy = y,fx = x;
while(bak[fy] != fy)
fy = bak[fy];
while(1)
{
frn[sx] = frn[fy];
ran[sx] = ran[sx] + ran[fy];
if(sx == pre[sx]) break;
sx = pre[sx];
}
while(fx != bak[fx])
{
frn[bak[fx]] = frn[fy];
ran[bak[fx]] = ran[fx]+1;
fx = bak[fx];
}
if(fy == sx)
return;
else
{
//cout << fy << ' ' << sx << endl;
bak[fy] = sx;
pre[sx] = fy;
}
}
int main()
{
for(int i = 1;i <= 30000;i++)
{
pre[i] = i;
bak[i] = i;
frn[i] = i;
ran[i] = 1;
}
long long t;
cin >> t;
for(int i = 1;i <= t;i++)
{
char a;
int x,y;
cin >> a >> x >> y;
if(a == 'M')
Merge(x,y);
if(a == 'C')
{
if(frn[x] == frn[y])
cout << abs(ran[x] - ran[y])-1 << endl;
else
cout << -1 << endl;
}
}
//cout << ran[1] << ' ' << ran[30000] << endl;
//cout << frn[1] << ' ' << frn[30000] << endl;
return 0;
}
by Smithespics @ 2023-03-25 22:09:47