Pagini recente » Cod sursa (job #3141125) | Cod sursa (job #2806135) | Cod sursa (job #597611) | Cod sursa (job #2127634) | Cod sursa (job #1416276)
#include <stdio.h>
#define NMax 100001
FILE *fin = fopen("disjoint.in", "rt");
FILE *fout = fopen("disjoint.out", "wt");
int n, m;
int cc[NMax];
void update(int x, int y) {
int ccy = cc[y];
for (int i = 1; i <= n; i++) {
if (cc[i] == ccy) {
cc[i] = cc[x];
}
}
}
int query(int x, int y) {
return (cc[x] == cc[y]);
}
int main() {
fscanf(fin, "%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
cc[i] = i;
}
int t, x, y;
while (m--) {
fscanf(fin, "%d %d %d", &t, &x, &y);
if (t == 1) {
// update: reunesc multimile nodurilor x si y
update(x, y);
} else {
// query: vreau sa stiu daca x si y sunt in aceeasi multime
if (query(x, y) == 1) {
fprintf(fout, "DA\n");
} else {
fprintf(fout, "NU\n");
}
}
}
fclose(fin);
fclose(fout);
return 0;
}