Mai intai trebuie sa te autentifici.
Cod sursa(job #2285851)
| Utilizator | Data | 19 noiembrie 2018 13:29:52 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.8 kb |
#include <iostream>
#include <fstream>
using namespace std;
ofstream fo("disjoint.out");
ifstream fi("disjoint.in");
int n,m,tip,a,b,parinte[100005];
int father(int nod)
{
if(nod==parinte[nod])
return nod;
parinte[nod]=father(parinte[nod]);
return parinte[nod];
}
int main()
{
fi>>n>>m;
for(int i=1;i<=n;i++)
parinte[i]=i;
for(int i=1; i<=m; i++)
{
fi>>tip;
if(tip==1) ///Reuniune
{
fi>>a>>b;
parinte[father(b)]=father(a);
}
else
{
fi>>a>>b;
if(father(a)==father(b))
fo<<"DA"<<"\n";
else
fo<<"NU"<<"\n";
}
}
for(int i=1;i<=n;i++)
cout<<parinte[i]<<"\n";
}
