Cod sursa(job #2304040)
| Utilizator | Data | 17 decembrie 2018 14:04:40 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.91 kb |
#include <bits/stdc++.h>
#define DIM 100005
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n, m, q, x, y;
int t[DIM], rx, ry;
int radacina( int nod )
{
while( t[nod] > 0 )
nod = t[nod];
return nod;
}
int main()
{
in>>n>>m;
for( int i = 1; i <= n; i++ )
t[i] = -1;
for( int i = 1; i <= m; i++ )
{
in>>q>>x>>y;
rx = radacina(x);
ry = radacina(y);
if( q == 1 )
{
if( t[rx] < t[ry] )
{
t[rx] += t[ry];
t[ry] = rx;
}
else
{
t[ry] += t[rx];
t[rx] = ry;
}
}
else
{
if( rx == ry )
out<<"DA\n";
else
out<<"NU\n";
}
}
return 0;
}
