Pagini recente » Cod sursa (job #2181990) | Cod sursa (job #3283782) | Cod sursa (job #2192077) | Cod sursa (job #2195951) | Cod sursa (job #1367602)
#include <iostream>
#include <fstream>
#define nmax 100005
using namespace std;
int n, m;
int tata[nmax], nr[nmax];
int root(int x) {
if (tata[x] == x)
return x;
return root(tata[x]);
}
int main() {
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
fin >> n >> m;
for (int i = 1; i <= n; i++)
tata[i] = i, nr[i] = 1;
for (int i = 1; i <= m; i++) {
int x, y, op;
fin >> op >> x >> y;
int r1 = root(x);
int r2 = root(y);
if (op == 2)
r1 == r2 ? fout << "DA\n" : fout << "NU\n";
if (r1 == r2) {
continue;
}
if (nr[r1] >= nr[r2]) {
nr[r1] += nr[r2];
tata[r2] = r1;
} else {
nr[r2] += nr[r1];
tata[r1] = r2;
}
}
fin.close();
fout.close();
return 0;
}