DSL_1_A :並查集
阿新 • • 發佈:2018-12-13
#include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N=1e4+5; int P[N]; int R[N]; int n,q; void init(){ int i; for(int i=0;i<n;i++){ P[i]=i; R[i]=0; } } int find(int v){ if(v!=P[v]) P[v]=find(P[v]); return P[v]; } void join(int u,int v){ int a=find(u); int b=find(v); if(a==b) return ; if(R[a]<R[b]) P[a]=b; else { P[b]=a; if(R[a]==R[b]) R[b]++; } } int main(){ ios::sync_with_stdio(false); int m,x,y; cin>>n>>q; init(); for(int i=0;i<q;i++){ cin>>m>>x>>y; if(m==0)join(x,y); if(m==1){ if(find(x)==find(y)) cout<<1<<endl; else cout<<0<<endl; } } return 0; }