Pagini recente » Cod sursa (job #2276763) | Cod sursa (job #1618770) | Cod sursa (job #2246153) | Cod sursa (job #2396184) | Cod sursa (job #1925475)
#include <fstream>
using namespace std;
int n, op, cod, x, y, p[100001], rang[100001];
void initp () {
for (int i = 1; i <= n; i++)
p[i] = i;
}
void uniune (int r1, int r2) {
if (rang[r1] > rang[r2])
p[r2] = r1;
else {
p[r1] = r2;
if (rang[r1] == rang[r2])
rang[r2]++;
}
}
int findset (int x) {
while (p[x] != x)
x = p[x];
return x;
}
int main () {
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
fi >> n >> op; initp();
for (int i = 1; i <= op; i++) {
fi >> cod >> x >> y;
if (cod == 1)
uniune(findset(x), findset(y));
else
if (findset(x) == findset(y))
fo << "DA\n";
else
fo << "NU\n";
}
return 0;
}