Pagini recente » Cod sursa (job #2260488) | Cod sursa (job #3281037) | Cod sursa (job #2197050) | Cod sursa (job #573158) | Cod sursa (job #1901931)
#include<bits/stdc++.h>
#define N 100020
using namespace std;
int k[N], s[N];
int find(int x){
int r=x, y;
while(x!=k[x])x=k[x];
while(k[r]!=r){
y=k[r];
k[r]=x;
r=y;
}
return x;
}
void unite(int a, int b){
a=find(a);
b=find(b);
if(s[a]<s[b]) swap(a, b);
s[a]+=s[b];
k[b]=a;
}
int main(){
int n, m;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i=1;i<=n;i++){
s[i]=1;
k[i]=i;
}
int k, x, y;
while(m--){
scanf("%d%d%d", &k, &x, &y);
if(k==1) unite(x, y);else{
if(find(x)==find(y)) printf("DA\n"); else printf("NU\n");
}
}
return 0;
}