Cod sursa(job #667931)
| Utilizator | Data | 23 ianuarie 2012 22:12:47 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include<fstream>
#include<vector>
using namespace std;
int n,m;
int tata[100001];
int afla_tata(int x)
{
while(tata[x])
x=tata[x];
return x;
}
int main()
{
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
fin>>n>>m;
for(;m;--m)
{
int tip,x,y;
fin>>tip>>x>>y;
if(tip==1)
tata[y]=x;
if(tip==2)
if(afla_tata(x)==afla_tata(y))
fout<<"DA\n";
else
fout<<"NU\n";
}
}