Cod sursa(job #904326)
| Utilizator | Data | 4 martie 2013 08:45:29 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <fstream>
using namespace std;
fstream in("disjoint.in",ios::in),out("disjoint.out",ios::out);
int m,n,cod,x,y,p[100100],rx,ry;
int r(int x){
if(p[x]==x){
return x;
}
int ra=r(p[x]);
p[x]=ra;
return ra;
}
int main()
{
in>>n>>m;
for(int i=1 ; i<=n ; i++){
p[i]=i;
}
for(int i=1 ; i<=m ; i++){
in>>cod>>x>>y;
if(cod==1){
rx=r(x);
ry=r(y);
p[rx]=ry;
}
if(cod==2){
if(r(x)==r(y)){
out<<"DA\n";
}else{
out<<"NU\n";
}
}
}
return 0;
}
