我竟然被并查集卡住了。。。。

P1196 [NOI2002] 银河英雄传说

唔,试出了一个错误样例: ``` 4 M 1 2 M 3 4 M 1 4 C 3 2 ``` 正在分析
by LYNiko @ 2021-06-24 12:25:43


```cpp #include<bits/stdc++.h> using namespace std; const int N=30100; int f[N],d[N],size[N]; int find(int a){ int j; if(f[a]!=a){ j=find(f[a]); d[a]+=d[f[a]]; f[a]=j; } return f[a]; } int main() { char of; int n,i,a,b; cin>>n; for(i=1;i<=N;i++){ f[i]=i;size[i]=1;d[i]=0; } for(i=1;i<=n;i++){ cin>>of>>a>>b; if(of=='M'){ a=find(a);b=find(b); f[a]=b;d[a]+=size[b];size[b]+=size[a]; } else { if(find(a)==find(b)) cout<<abs(d[a]-d[b])-1; else cout<<-1; cout<<endl; } } return 0; } ``` 应该好了,试试 感觉你没有读清楚题目 ~~或者题解~~
by LYNiko @ 2021-06-24 13:11:13


@[LYNiko](/user/384583) orz谢谢大佬
by pencil @ 2021-06-25 15:14:02


|