我在其他网站上做题
发现加了流加速以后反而内存爆了直接从几M到256M
后来看了一下数据也没超
和P1196差不多 可能数据不一样(洛谷上能过)
#include<bits/stdc++.h>
using namespace std;
int T;
int f[30010];
int d[30010];
int e[30010];
int find1(int x)
{
return f[x]==x?x:f[x]=find1(f[x]);
}
int find2(int x)
{
return f[x]==x?0:d[x]=d[x]+find2(f[x]);
}
int find3(int x)
{
return e[x]==x?x:e[x]=find3(e[x]);
}
int find(int x)
{
find2(x);find3(x);return find1(x);
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
for(int i=1;i<=30000;i++)
{
f[i]=i;
e[i]=i;
}
cin>>T;
while(--T)
{
int x,y;
char c;
cin>>c>>x>>y;
if(c=='M')
{
find(x);
find(y);
d[f[x]]=1;
f[f[x]]=e[y];
e[e[y]]=e[x];
}
else
{
if(find(x)==find(y))
{
cout<<abs(d[x]-d[y])-1<<"\n";
continue;
}
cout<<"-1\n";
}
}
return 0;
}