Nu aveti permisiuni pentru a descarca fisierul grader_test14.ok
Cod sursa(job #1011125)
| Utilizator | Data | 16 octombrie 2013 11:14:57 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.84 kb |
#include <cstdio>
const int M = 100001;
struct quest
{
int t, x, y;
};
quest q[M + 1];
int t[M + 1];
int n, m;
void init ()
{
int i;
freopen ("disjoint.in", "r", stdin);
freopen ("disjoint.out", "w", stdout);
scanf ("%d %d", &n, &m);
for (i = 1; i <= m; i ++)
scanf ("%d %d %d ", &q[i].t, &q[i].x, &q[i].y);
}
int radacina (int x)
{
if (t[x] == 0)
return x;
t[x] = radacina (t[x]);
return t[x];
}
void solve_afis ()
{
int i;
for (i = 1; i <= m; i ++)
if (q[i].t == 1)
t[radacina(q[i].x)] = q[i].y;
else
if (radacina (q[i].x) == radacina (q[i].y))
printf ("DA\n");
else
printf ("NU\n");
}
int main ()
{
init ();
solve_afis ();
return 0;
}
