Pagini recente » Cod sursa (job #248271) | Cod sursa (job #2636866) | Cod sursa (job #1528399) | Cod sursa (job #2389352) | Cod sursa (job #1495757)
#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[v[i]]->next = L[v[j]];
last[v[i]] = last[v[j]];
for(node *p = L[v[j]]; p; p = p->next) {
v[p->inf] = v[L[v[i]]->inf];
L[p->inf] = L[v[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;
}