Pagini recente » Cod sursa (job #1530674) | Cod sursa (job #3135282) | Cod sursa (job #323093) | Cod sursa (job #380515) | Cod sursa (job #826172)
Cod sursa(job #826172)
#include <cstdio>
#define NMAX 100001
using namespace std;
FILE *fin = fopen("disjoint.in", "r");
FILE *fout = fopen("disjoint.out", "w");
int T[NMAX], R[NMAX];
int N, M;
int FindSet(int nod) {
if(nod != T[nod])
T[nod] = FindSet(T[nod]);
return T[nod];
}
void UnionSet(int a, int b) {
a = FindSet(a);
b = FindSet(b);
if(R[a] < R[b]) T[a] = T[b];
else T[b] = T[a];
if(R[a] == R[b]) R[a] = R[a] + 1;
}
void read() {
int i, cod, a, b;
fscanf(fin, "%d %d", &N, &M);
for(i = 1; i <= N; i = i + 1) {
T[i] = i;
R[i] = 0;
}
for(i = 1; i <= M; i = i + 1) {
fscanf(fin, "%d %d %d", &cod, &a, &b);
if(cod == 1) UnionSet(a, b);
else if(FindSet(a) == FindSet(b)) fprintf(fout, "DA\n");
else fprintf(fout, "NU\n");
}
}
int main() {
read();
return 0;
}