Cod sursa(job #1614904)
Utilizator | Data | 26 februarie 2016 11:48:23 | |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.66 kb |
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,j,i,o,x,y,c,v[100001];
void actualizare(int x)
{
if (v[x]==x)
o=x;
else
{
actualizare (v[x]);
v[x]=o;
}
}
int main()
{
fin>>n>>m;
for (i=1;i<=n;i++)
v[i]=i;
for (i=1;i<=m;i++)
{
fin>>c>>x>>y;
actualizare(x);
actualizare(y);
if (c==1)
v[y]=v[x];
else
{
if (v[v[x]]==v[y])
fout<<"DA\n";
else
fout<<"NU\n";
}
}
return 0;
}