https://www.acwing.com/problem/content/description/240/
d[x]表示的是x到其根节点的距离
小呆呆题解
#includeusing namespace std; const int N=1e4*3+10; int p[N],d[N],cnt[N],t; int find(int x) { if(x!=p[x]) { int root=find(p[x]); d[x]+=d[p[x]]; p[x]=root; } return p[x]; } int main(void) { for(int i=1;i >t; while(t--) { string op; int a,b; cin>>op>>a>>b; if(op=="M") { int pa=find(a),pb=find(b);//连接中 d[pa]=0,因为根到根的距离为0, 连接后 d[pa]=cnt[pb] d[pa]=cnt[pb]; cnt[pb]+=cnt[pa]; p[pa]=pb; } else { int pa=find(a),pb=find(b); if(pa!=pb) puts("-1"); else cout<



