Pagini recente » Cod sursa (job #1249717) | Cod sursa (job #2154820) | Cod sursa (job #1614778) | Cod sursa (job #958685) | Cod sursa (job #343517)
Cod sursa(job #343517)
#include <stdio.h>
#define INPUT "disjoint.in"
#define OUTPUT "disjoint.out"
int tata(int nod, int *t)
{
int rad = nod;
for(; t[rad] != -1; rad = t[rad]);
while(t[nod] != -1)
{
int x = t[nod];
t[nod] = rad;
nod = x;
}
return rad;
}
int main()
{
freopen(INPUT, "r", stdin);
freopen(OUTPUT, "w", stdout);
int n, m;
scanf("%d %d", &n, &m);
int *t = new int[n];
int i;
for(i = 0; i < n; ++i) t[i] = -1;
for(i = 0; i < m; ++i)
{
int tip, x, y;
scanf("%d %d %d", &tip, &x, &y); --x; --y;
if(tip == 1)
{
int a = tata(x, t);
int b = tata(y, t);
if(a != b)
{
t[a] = b; t[x] = b;
if(y != b) t[y] = b;
}
}
else
{
if(tata(x, t) == tata(y, t)) printf("DA\n");
else printf("NU\n");
}
}
return 0;
}