Pagini recente » Cod sursa (job #1599681) | Cod sursa (job #3184633) | Cod sursa (job #2739461) | Cod sursa (job #597894) | Cod sursa (job #3260720)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5 + 5;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, x, y, c, tata[nmax], h[nmax];
int Radacina(int nod){
if(tata[nod] == nod){
return nod;
}else{
int r = Radacina(tata[nod]);
tata[nod] = r;
return r;
}
}
void Unire(int a, int b){
a = Radacina(a);
b = Radacina(b);
if(h[a] < h[b]){
tata[a] = b;
h[b] += h[a];
}else{
tata[b] = a;
h[a] += h[b];
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++){
h[i] = 1;
tata[i] = i;
}
for(int i=1;i<=m;i++){
fin>>c>>x>>y;
if(c == 1){
if(Radacina(x) != Radacina(y)){
Unire(x, y);
}
}else{
if(Radacina(x) != Radacina(y)){
fout<<"NU"<<"\n";
}else{
fout<<"DA"<<"\n";
}
}
}
}