代码随想录:寻找存在的路径

并查集判断两者是否联通

#include<iostream>
#include<vector>
using namespace std;

vector<int> fa = vector<int>(101,0);

void init(){
    for(int i = 0;i<fa.size();i++){
        fa[i]=i;
    }
}

int find(int i){
    if(fa[i]==i)return i;
    else return fa[i] = find(fa[i]);
}

int isSame(int a,int b){
    a = find(a);
    b = find(b);
    return a==b;
}

void join(int a,int b){
    a = find(a);
    b = find(b);
    if(a==b)return;
    else fa[a]=b;
}

int main(){
    int n,m;
    int a,b;
    cin>>n>>m;
    
    init();
    
    while(m--){
        cin>>a>>b;
        join(a,b);
    }
    
    int source,destination;
    cin>>source>>destination;
    
    if(isSame(source,destination))cout<<1<<endl;
    else cout<<0<<endl;
}
posted @ 2025-02-16 11:48  huigugu  阅读(0)  评论(0编辑  收藏  举报