Pagini recente » Cod sursa (job #3355391) | Cod sursa (job #1310437) | Cod sursa (job #973806) | Cod sursa (job #1817810) | Cod sursa (job #3329741)
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 100000+5;
int parent[MAXN], rnk[MAXN];
int find_set(int v){
if(parent[v]==v) return v;
parent[v] = find_set(parent[v]); // path compression
return parent[v];
}
void union_set(int a,int b){
a = find_set(a);
b = find_set(b);
if(a!=b){
if(rnk[a]<rnk[b]) swap(a,b);
parent[b]=a;
if(rnk[a]==rnk[b]) rnk[a]++;
}
}
signed main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int N,M; cin>>N>>M;
for(int i=1;i<=N;i++){
parent[i]=i;
rnk[i]=0;
}
for(int i=0;i<M;i++){
int cod,x,y; cin>>cod>>x>>y;
if(cod==1){
union_set(x,y);
}else{
if(find_set(x)==find_set(y)) cout<<"DA\n";
else cout<<"NU\n";
}
}
return 0;
}