Pagini recente » Cod sursa (job #3356380) | Monitorul de evaluare | Cod sursa (job #661516) | Cod sursa (job #777295) | Cod sursa (job #2514615)
#include <iostream>
using namespace std;
int tata[100001], niv[1000001];
int cautare(int nod){
int cpnod = nod, rad = nod;
while(tata[rad] != 0){
rad = tata[rad];
}
while(tata[cpnod] != 0){
int aux = tata[cpnod];
tata[cpnod] = rad;
cpnod = aux;
}
return rad;
}
void reuniune(int x, int y){
int t1 = cautare(x);
int t2 = cautare(y);
if(niv[t1] < niv[t2]){
tata[t1] = t2;
}
else if(niv[t2] < niv[t1]){
tata[t2] = t1;
}
else{
tata[t1] = t2;
niv[t2]++;
}
}
bool apartinMultimii(int x, int y){
int t1 = cautare(x);
int t2 = cautare(y);
return t1 == t2;
}
int main()
{
int n, m;
cin >> n >> m;
int operatie, x, y;
for(int i = 1; i <= m; i++){
cin >> operatie >> x >> y;
if(operatie == 1){
reuniune(x, y);
}
else{
apartinMultimii(x, y)?cout <<"DA":cout <<"NU";
}
}
return 0;
}