Cod sursa(job #2937933)
| Utilizator | Data | 11 noiembrie 2022 14:04:55 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int *multimi;
int gaseste(int x){
if(multimi[x]==x)
return x;
return multimi[x]=gaseste(multimi[x]);
}
void uneste(int x, int y){
multimi[gaseste(x)]=gaseste(y);
}
int main(){
int n,m;
fin>>n>>m;
multimi=new int[n+1];
for(int i=1;i<=n;i++)
multimi[i]=i;
int cod,x,y;
while(fin>>cod>>x>>y){
if(cod==1)
uneste(x,y);
else{
fout<<(gaseste(x)==gaseste(y)?"DA\n":"NU\n");
}
}
return 0;
}
