Cod sursa(job #739309)
| Utilizator | Data | 22 aprilie 2012 17:49:57 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <fstream>
#define LE 200000
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int i,n,op,T[LE],x,y,tip;
int main()
{
f>>n>>op;
for(i=1; i<=n; ++i)
T[i]=i;
for(i=1; i<=op; ++i)
{
f>>tip>>x>>y;
if (tip==1)
{
while (x!=T[x])
x=T[x];
while (y!=T[y])
y=T[y];
T[y]=x;
}
else
{
while (x!=T[x])
x=T[x];
while (y!=T[y])
y=T[y];
if (x==y) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
f.close();
g.close();
return 0;
}
