Pagini recente » Cod sursa (job #2736055) | Cod sursa (job #140058) | Cod sursa (job #2254169) | Cod sursa (job #1391995) | Cod sursa (job #1496921)
#include <bits/stdc++.h>
using namespace std;
int v[100005];
int lg[100005];
int org[100005];
void mergeList(int a, int b) {
if(lg[b] > lg[a]) {
int aux = a;
a = b;
b = aux;
}
if(lg[a] == lg[b])
lg[a] ++;
while(b != v[b]) {
lg[b] = lg[a];
org[b] = org[a];
b = v[b];
}
lg[b] = lg[a];
org[b] = org[a];
}
int main()
{
FILE *f = fopen("disjoint.in", "r");
FILE *g = fopen("disjoint.out", "w");
int n, m;
int x, y, t;
fscanf(f, "%d %d", &n, &m);
for(int i = 1; i <= n; i ++) {
v[i] = i;
lg[i] = 1;
org[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(org[x] == org[y])
fprintf(g, "DA\n");
else fprintf(g, "NU\n");
}
}
return 0;
}