aw_aw @ 2022-07-31 21:56:43
题解里面输入样例:
4 7
2 1 2
1 1 2
2 1 2
1 3 4
2 1 4
1 2 3
2 1 4
输出的是:
N
Y
N
N
然后对了???? 求解
#include<bits/stdc++.h>
using namespace std;
int a[100100];
int n,m,z,x,y;
int findfather(int x){
if(x=a[x]){
return x;
}
else{
return a[x]=findfather(a[x]);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
a[i]=i;
}
for(int i=1;i<=m;i++){
cin>>z>>x>>y;
if(z==1){
a[findfather(x)]=findfather(y);
}
if(z==2){
if(findfather(x)==findfather(y)){
cout<<"Y"<<endl;
}
else{
cout<<"N"<<endl;
}
}
}
return 0;
}
by QcpyWcpyQ @ 2022-07-31 21:58:12
应为
if(x==a[x])
by QcpyWcpyQ @ 2022-07-31 21:58:29
@QcpyWcpyQ 第六行
by Galex @ 2022-07-31 21:58:54
@aw_aw findfather
函数中的第一个 if
里面的条件应为 x == a[x]
而非 x = a[x]
。
by aw_aw @ 2022-07-31 21:59:23
@QcpyWcpyQ 谢谢dalao!!
by aw_aw @ 2022-07-31 22:00:42
@Galex 所以样例输出的问题...
by ImposterAnYu @ 2022-07-31 22:49:15
@aw_aw 是不是应该先指出来是哪篇题解……