Pagini recente » Cod sursa (job #1594459) | Cod sursa (job #2849443) | Cod sursa (job #2453671) | Cod sursa (job #2482586) | Cod sursa (job #1660747)
#include <stdio.h>
int szulo(int x, int *apa);
void egyesites(int x, int y, int *apa, int *rang);
int main(){
int i, n, m, op, x, y, apa[100001], rang[100001];
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i = 0; i < n; ++i){
apa[i] = i;
rang[i] = 1;
}
while(m--){
scanf("%d%d%d", &op, &x, &y);
if(op == 1){
egyesites(x, y, apa, rang);
}
else{
printf("%s\n", szulo(x, apa) == szulo(y, apa) ? "DA" : "NU");
}
}
return 0;
}
void egyesites(int x, int y, int *apa, int *rang){
int apax = szulo(x, apa), apay = szulo(y, apa);
if(rang[apax] > rang[apay]){
apa[apay] = apax;
}
else{
apa[apax] = apay;
}
if(rang[apax] == rang[apay]){
++rang[apay];
}
}
int szulo(int x, int *apa){
if(x == apa[x]){
return x;
}
return apa[x] = szulo(apa[x], apa);
}