Cod sursa(job #1950248)
| Utilizator | Data | 2 aprilie 2017 20:42:21 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.92 kb |
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, el, i, f[100002],c,a,b,j;
int calc(int nod)
{
while(f[nod]>=0)
nod=f[nod];
return nod;
}
int main(){
fin>>el>>n;
for(i=1;i<=el;i++)
f[i]=-1;
for(i=1;i<=n;i++)
{
fin>>c>>a>>b;
if(c==1)
{
if(f[a]>=f[b])
{
f[a]+=f[b];
f[b]=a;
}
else
{
f[b]+=f[a];
f[a]=b;
}
}
else
{
if(calc(a)==calc(b))
fout<<"DA\n";
else
fout<<"NU\n";
}
for(j=1;j<=el;j++)
fout<<f[j]<<" ";
fout<<"\n";
}
fin.close();
fout.close();
return 0;
}
