Pagini recente » Cod sursa (job #989302) | Cod sursa (job #1973065) | Istoria paginii runda/antrenament-de-primavarav/clasament | Cod sursa (job #1275359) | Cod sursa (job #2170812)
#include <fstream>
using namespace std;
int n, op, o, x, y, p[100005], rang[100005];
void init() {
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; init();
for (int i = 1; i <= op; i++) {
fi >> o >> x >> y;
if (o == 1)
uniune(findset(x), findset(y));
else
if (findset(x) == findset(y))
fo << "DA\n";
else
fo << "NU\n";
}
return 0;
}