Cod sursa(job #658023)

Utilizator lazarik1992Lazar Catalin-Alexandru lazarik1992 Data 7 ianuarie 2012 20:01:31
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <stdio.h>
int N, M, t[100005];
int get_root(int x)
{
while (t[x] != x) x = t[x];
return x;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int i, op, x, y, r1, r2;
scanf("%d %d",&N, &M);
for (i = 1; i <= N; i++) t[i] = i;
for (i = 1; i <= M; i++)
{
scanf("%d %d %d",&op, &x, &y);
r1 = get_root(x); r2 = get_root(y);
if (op == 1)
{
if (r1 < r2) t[r2] = r1;
else t[r1] = r2;
}
else printf("%s\n", r1 == r2 ? "DA" : "NU");
}
return 0;
}