Pagini recente » Cod sursa (job #1505692) | Cod sursa (job #1404842) | Cod sursa (job #1521433) | Cod sursa (job #1903129) | Cod sursa (job #605508)
Cod sursa(job #605508)
# include <cstdio>
const char *FIN = "disjoint.in", *FOU = "disjoint.out";
const int MAX = 100005;
int N, M, T[MAX], R[MAX];
int search (int X) {
if (X != T[X]) T[X] = search (T[X]);
return T[X];
}
inline void unite (int X, int Y) {
if (R[X] > R[Y]) T[Y] = X;
else T[X] = Y;
if (R[X] == R[Y]) ++R[Y];
}
int main (void) {
freopen (FIN, "r", stdin);
freopen (FOU, "w", stdout);
scanf ("%d %d", &N, &M);
for (int i = 1; i <= N; ++i)
T[i] = i, R[i] = 1;
for (int i = 1, tip, x, y; i <= M; ++i) {
scanf ("%d %d %d", &tip, &x, &y);
if (tip == 2)
printf ("%s\n", search (x) == search (y) ? "DA" : "NU");
else unite (search (x), search (y));
}
}