Cod sursa(job #2304042)
| Utilizator | Data | 17 decembrie 2018 14:05:31 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.78 kb |
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int N,T,t[100010],i,ra,rb,test,a,b;
int rad(int x){
while(t[x]>0)
x=t[x];
return x;
}
int main(){
fin>>N>>T;
for(i=1;i<=N;i++)
t[i]=-1;
for(i=1;i<=T;i++){
fin>>test>>a>>b;
ra=rad(a);
rb=rad(b);
if(test==1){
if(ra!=rb){
if(ra<rb){
t[ra]+=t[rb];
t[rb]=ra;
}
else{
t[rb]+=t[ra];
t[ra]=rb;
}
}
}
else{
if(rb==ra)
fout<<"DA"<<"\n";
else
fout<<"NU"<<"\n";
}
}
return 0;
}
