代码随想录:寻找存在的路径
并查集判断两者是否联通
#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;
}