Cod sursa(job #2304301)
| Utilizator | Data | 17 decembrie 2018 21:19:06 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.76 kb |
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m, t[100001],x, y,rx,ry,q,i;
int rad(int nod){
while(t[x] > 0)
nod = t[nod];
return nod;
}
int main(){
fin>>n>>m;
for(i=1;i<=n;i++)
t[i] = -1;
while(m--){
fin>>q>>x>>y;
rx=rad(x);
ry=rad(y);
if(q==1 && rx!=ry){
if(t[rx]<t[ry]){
t[rx]+=t[ry];
t[ry]=rx;
}
else{
t[ry]+=t[rx];
t[rx]=ry;
}
}
if(q==2){
if(rx==ry)
fout<<"DA\n";
else
fout<<"NU\n";
}
}
return 0;
}
