Pagini recente » Cod sursa (job #594982) | Cod sursa (job #310268) | Cod sursa (job #920921) | Cod sursa (job #367284) | Cod sursa (job #1857194)
#include <iostream>
#include <cstdio>
#define N 100005
using namespace std;
int n, m, p[N], r[N];
int find_set(int val){
int x=val, y, root;
while(p[x])x=p[x];
root=x;
while(p[x]){
y=p[x];
p[x]=root;
x=y;
}
return root;
}
void merge_sets(int x, int y){
if(r[x]>r[y])p[y]=x;
else p[x]=y;
if(r[x]==r[y])r[y]++;
}
int main(){
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
cin>>n>>m;
int op, a, b;
for(int i=1; i<=m; i++){
cin>>op>>a>>b;
if(op==1)merge_sets(find_set(a), find_set(b));
else cout<<((find_set(a)==find_set(b))?"DA":"NU")<<"\n";
}
return 0;
}