Pagini recente » Cod sursa (job #3321341) | Cod sursa (job #1221754) | Cod sursa (job #1284195) | Cod sursa (job #2244005) | Cod sursa (job #1739111)
#include<stdio.h>
FILE *in, *out;
int v[100001], siz[100001];
void uneste(int a, int b)
{
a = cap(a);
b = cap(b);
if(siz[a] == siz[b]) {
v[b] = a;
siz[a]++;
} else {
if(siz[a] > siz[b]) {
v[b] = a;
} else {
v[a] = b;
}
}
}
int cap(int nod)
{
if(v[nod] != nod) {
v[nod] = cap(v[nod]);
}
return v[nod];
}
int main () {
int i, q, a, b, o, n;
in = fopen("disjoint.in", "r");
out = fopen("disjoint.out", "w");
fscanf(in, "%d%d", &n, &q);
for(i = 1; i <= n; i++) {
v[i] = i;
siz[i] = 1;
}
for(i = 0; i < q; i++) {
fscanf(in, "%d%d%d", &o, &a, &b);
if(o == 1) {
uneste(a, b);
} else {
if(cap(a) == cap(b)) {
fprintf(out, "DA");
} else {
fprintf(out, "NU");
}
fprintf(out, "\n");
}
}
fclose(in);
fclose(out);
return 0;
}