Pagini recente » Cod sursa (job #1654704) | Cod sursa (job #3245012) | Cod sursa (job #2126712) | Cod sursa (job #490105) | Cod sursa (job #2908600)
#include <bits/stdc++.h>
using namespace std;
#define MAX 100001
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, q, c, a, b, t[MAX], lg[MAX];
int rad(int n){
while(t[n] != n){
t[n] = rad(t[n]);
return t[n];
}
return n;
}
void uneste(int a ,int b){
int ar = rad(a);
int br = rad(b);
if(lg[ar] > lg[br]){
t[br] = ar;
}
else if(lg[ar] < lg[br]) t[ar] = br;
else if(lg[ar] == lg[br]) t[ar] = br, lg[br]++;
}
int main(){
fin >> n >> q;
for(int i = 1; i <= n; i++)
t[i] = i , lg[i] = 1;
while(q--){
fin >> c >> a >> b;
if(c == 1){
uneste(a, b);
}
else{
int ar = rad(a);
int br = rad(b);
if(ar == br) fout << "DA" << '\n';
else fout << "NU" << '\n';
}
}
}