Cod sursa(job #2563582)
| Utilizator | Data | 1 martie 2020 12:40:31 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include<fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n, m, t[100010];
int f (int a)
{
if (a==t[a])return a;
else
{
t[a]=f(t[a]);
return t[a];
}
}
int main ()
{
int i, c, x, y;
fin>>n>>m;
for (i=1; i<=n; i++)t[i]=i;
for (i=1; i<=m; i++)
{
fin>>c>>x>>y;
if (c==1)
t[f(x)]=f(y);
else
{
if (f(x)==f(y))fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
}
}
