Pagini recente » Cod sursa (job #329250) | Cod sursa (job #2317694) | Cod sursa (job #3146792) | Cod sursa (job #377724) | Cod sursa (job #1493819)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
#define MAXN 100005
int n, m, Set[MAXN], Size[MAXN];
void Merge(int where, int who){
if(!Size[who])
return;
for(int i=1; i<=n && Size[who]; ++i)
if(Set[i]==Set[who]){
Set[i]=Set[where];
++Size[where], --Size[who];
}
}
void Union(int a, int b){
int m1=Set[a], m2=Set[b];
if(Size[m1]>Size[m2])
Merge(m1, m2);
else Merge(m2, m1);
}
int main(){
fin>>n>>m;
int cod, x, y;
for(cod=1; cod<=n; ++cod)
Set[cod]=cod, Size[cod]=1;
while(m--){
fin>>cod>>x>>y;
if(cod==1) Union(x, y);
else fout<<((Set[x]==Set[y])?"DA\n":"NU\n");
}
return 0;
}