题解不对吧???

P3367 【模板】并查集

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

然后对了???? 求解

还有
求各位dalao看看本蒟蒻的码哪里错了??
#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 是不是应该先指出来是哪篇题解……


|