Pagini recente » Cod sursa (job #3175267) | Cod sursa (job #894120) | Cod sursa (job #988608) | Cod sursa (job #2905674) | Cod sursa (job #2976613)
#include <iostream>
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream input("disjoint.in");
ofstream output("disjoint.out");
int n, m, tata[NMAX], rang[NMAX];
int radacina(int nod){
if(tata[nod] == 0){
return nod;
}
else{
return radacina(tata[nod]);
}
}
void unire(int a, int b){
int ra = radacina(a);
int rb = radacina(b);
if(rang[ra] > rang[rb]){
tata[rb] = ra;
}
else{
tata[ra] = rb;
if(rang[ra] == rang[rb]){
rang[rb]++;
}
}
}
int main()
{
int op, nod1, nod2, r1, r2;
input >> n >> m;
for(int i = 1; i <= m; i++){
input >> op >> nod1 >> nod2;
if(op == 1){
unire(nod1, nod2);
}
if(op == 2){
r1 = radacina(nod1);
r2 = radacina(nod2);
(r1 == r2) ? (output << "DA") : (output << "NU");
output << '\n';
}
}
return 0;
}