Pagini recente » Cod sursa (job #1640303) | Cod sursa (job #1536979) | Cod sursa (job #2449044) | Cod sursa (job #2006358) | Cod sursa (job #1660746)
#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[100000], rang[100000];
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);
x -= 1;
y -= 1;
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);
}