Cod sursa(job #2782323)
| Utilizator | Data | 12 octombrie 2021 10:18:47 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
string raspuns[] = {"NU\n", "DA\n"};
int tata[100005];
int n, q, cmd, x, y;
int rx, ry;
int rad(int nod){
if(tata[nod] == 0)
return nod;
return rad(tata[nod]);
}
void unire(int r1, int r2){
tata[r2] = r1;
}
int main (){
fin>>n>>q;
for(int query=1; query <= q; query++){
fin>>cmd>>x>>y;
rx=rad(x);
ry=rad(y);
if(cmd == 1)
unire(rx, ry);
else
fout<<raspuns[(rx == ry)];
}
return 0;
}
