会报wrong answer
但是我的输出 与 他给出的正确输出没有差别
不知道问题在哪里。。。。请教各位dd
#include <iostream>
using namespace std;
const int N = 100010;
int fa[N],cnt[N];
int n,m;
int find(int x){
if(x != fa[x])
fa[x] = find(fa[x]);
return fa[x];
}
int main(){
cin >> n >> m;
for(int i = 0 ; i < n ; i ++){
fa[i] = i;
cnt[i]++;
}
while(m--){
string op;
cin >> op;
int a, b;
if(op == "C"){
cin >> a>> b;
int x = find(a);
int y = find(b);
//先求顶点的数量和,再合并集合
cnt[y] += cnt[x];
fa[x] = y;
}
else if(op == "Q1"){
cin >> a >> b;
if(find(a) == find(b))
cout << "Yes" <<endl;
else
cout << "No" <<endl;
}
else if(op == "Q2"){
cin >> a;
cout<<cnt[find(a)]<<endl;
}
}
}
好像是io流的问题 解决了
你初始化的时候没有初始化n
你好,在第五排那里,全局变量
for(int i = 0 ; i < n ; i ++) 这个我记得视频里是[1,n]