Pagini recente » Cod sursa (job #924324) | Cod sursa (job #2233486) | Cod sursa (job #2915836) | Cod sursa (job #722429) | Cod sursa (job #1495750)
#include <bits/stdc++.h>
using namespace std;
int n;
int v[100000];
struct node{
node *next;
int inf;
};
node *L[100000];
node *last[100000];
void add(node *&start, int inf) {
node *one = new node;
one->inf = inf;
one->next = start;
start = one;
}
void mergeList(int i, int j) {
last[i]->next = L[j];
for(node *p = L[i]; p; p = p->next) {
last[p->inf] = last[j];
}
for(node *p = L[j]; p; p = p->next) {
v[p->inf] = v[L[i]->inf];
L[p->inf] = L[i];
}
}
int main()
{
FILE *f = fopen("disjoint.in", "r");
FILE *g = fopen("disjoint.out", "w");
int m, x, y, t;
fscanf(f, "%d %d", &n, &m);
for(int i = 1; i <= n; i ++) {
add(L[i], i);
last[i] = L[i];
v[i] = i;
}
for(int i = 1; i <= m; i ++) {
fscanf(f, "%d %d %d", &t, &x, &y);
if(t == 1) mergeList(x, y);
else {
if(v[x] == v[y])
fprintf(g, "DA\n");
else fprintf(g, "NU\n");
}
}
return 0;
}