Pagini recente » Cod sursa (job #827983) | Cod sursa (job #1524138) | Cod sursa (job #1227049) | Cod sursa (job #2433686) | Cod sursa (job #1493064)
#include <cstdio>
#define nmx 100002
using namespace std;
int n, m, rang[nmx], tata[nmx];
int grupa(int x){
int aux = x, tatal = x;
while(tatal != tata[tatal])
tatal = tata[tatal];
while(x != tata[x]){
aux = tata[x];
tata[x] = tatal;
x = aux;
}
return tatal;
}
void uneste(int nod1, int nod2){
if(rang[nod1] > rang[nod2])
tata[nod2] = tata[nod1];
else
tata[nod1] = tata[nod2];
if(rang[nod1] == rang[nod2])
++ rang[nod2];
}
int main(){
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; ++i){
rang[i] = 1;
tata[i] = i;
}
int cond,x,y;
for(int i = 1; i <= m; ++i){
scanf("%d %d %d", &cond, &x, &y);
if(cond == 1)
uneste(grupa(x),grupa(y));
else
printf("%s\n", grupa(x) == grupa(y) ? "DA" : "NU");
}
return 0;
}