Pagini recente » Cod sursa (job #185118) | Cod sursa (job #1454935) | Cod sursa (job #3235204) | Cod sursa (job #925000) | Cod sursa (job #2908599)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 100001
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, q, cod, x, y, t[NMAX], lg[NMAX];
int rad(int n){
while(t[n] != n){
t[n] = rad(t[n]);
return t[n];
}
return n;
}
void uneste(int x, int y){
int ar = rad(x);
int br = rad(y);
if(lg[ar] > lg[br]){
t[br] = ar;
}
else if(lg[ar] < lg[br])
t[ar] = br;
else
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 >> cod >> x >> y;
if(cod == 1){
uneste(x, y);
}
else{
int ar = rad(x);
int br = rad(y);
if(ar == br)
fout << "DA" << '\n';
else
fout << "NU" << '\n';
}
}
}