Pagini recente » Cod sursa (job #2424803) | Cod sursa (job #718888) | Istoria paginii runda/pressure/clasament | Cod sursa (job #910996) | Cod sursa (job #2424810)
#include <iostream>
#include <fstream>
using namespace std;
int tata[500001];
int grad[500001];
int N, M, x, y, operatie;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int FindT(int nod) {
if (tata[nod] == nod) return nod;
tata[nod] = FindT(tata[nod]);
return tata[nod];
}
int main() {
fin >> N>>M;
for (int i = 1; i <= N; i++) {
tata[i] = i;
grad[i] = 1;
}
for (int i = 0; i < M; i++) {
fin >> operatie >> x >> y;
int fx, fy;
fx = FindT(x);
fy = FindT(y);
if (operatie == 1) {
if (grad[fx] < grad[fy]) {
tata[fx] = fy;
grad[fy] += grad[fx];
} else {
tata[fy] = fx;
grad[fx] += grad[fy];
}
} else if (operatie == 2) {
if (fx == fy)
fout << "DA" << '\n';
else fout << "NU" << '\n';
}
}
return 0;
}