Pagini recente » Cod sursa (job #1845468) | Cod sursa (job #2287201) | Cod sursa (job #175897) | Cod sursa (job #1710942) | Cod sursa (job #2437038)
#include <fstream>
using namespace std;
ifstream inf("disjoint.in");
ofstream outf("disjoint.out");
const int NMAX = 100001;
int ant[NMAX], h[NMAX];
int main() {
int n, m;
inf >> n >> m;
for(int i = 1; i <= n; i++) {
ant[i] = i;
h[i] = 1;
}
int q, a, b;
for(int i = 0; i < m; i++) {
inf >> q >> a >> b;
if(q == 1) {
while(ant[a] != a) {
ant[a] = ant[ant[a]];
a = ant[a];
}
while(ant[b] != b) {
ant[b] = ant[ant[b]];
b = ant[b];
}
if(h[a] > h[b]) {
ant[b] = a;
}
else {
ant[a] = b;
}
if(h[a] == h[b]) {
h[a] = h[b] = h[a] + 1;
}
}
else {
while(ant[a] != a) {
ant[a] = ant[ant[a]];
a = ant[a];
}
while(ant[b] != b) {
ant[b] = ant[ant[b]];
b = ant[b];
}
if(a == b) {
outf << "DA\n";
}
else {
outf << "NU\n";
}
}
}
return 0;
}