Pagini recente » Cod sursa (job #427372) | Cod sursa (job #3159892) | Cod sursa (job #2224939) | Cod sursa (job #415772) | Cod sursa (job #2223085)
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <iomanip>
#include <set>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
///problema de tip trofacil.
int elemin[100001];
int mult[100001];
int multcnt;
int main () {
//freopen("in", "r", stdin);
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, q;
scanf("%d%d", &n, &q);
for (int i = 0; i < q; i++) {
int op;
int x, y;
scanf("%d%d%d", &op, &x, &y);
if (op == 1) {
if (elemin[x] == 0 && elemin[y] == 0) {
multcnt++;
elemin[x] = multcnt;
elemin[y] = multcnt;
} else if (elemin[x] == 0) {
elemin[x] = elemin[y];
} else if (elemin[y] == 0) {
elemin[y] = elemin[x];
} else {
if (elemin[x] < elemin[y])
mult[elemin[y]] = elemin[x];
else if (elemin[x] > elemin[y])
mult[elemin[x]] = elemin[y];
}
} else {
int futureelem = mult[elemin[x]];
while (futureelem != 0) {
elemin[x] = futureelem;
futureelem = mult[elemin[x]];
}
futureelem = mult[elemin[y]];
while (futureelem != 0) {
elemin[y] = futureelem;
futureelem = mult[elemin[y]];
}
if (elemin[x] == elemin[y] && elemin[x] != 0)
printf ("DA\n");
else
printf ("NU\n");
}
}
}