Pagini recente » Cod sursa (job #2986925) | Cod sursa (job #2319780) | Cod sursa (job #1871427) | Cod sursa (job #1898932) | Cod sursa (job #2479183)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
int v[100005];
int w[100005];
int rettata(int i){
while(v[i] != i){
i = v[i];
}
return i;
}
void unite(int x,int y){
if(w[x] > w[y]){
v[y] = v[x];
}else{
v[x] = v[y];
}
if(w[x] == w[y]){
w[y]++;
}
}
int main()
{
int i;
int tata;
int a1,a2,c1;
fin>>n>>m;
for(i = 1; i <= n; i++){
v[i] = i;
w[i] = 1;
}
for(i = 1; i <= m; i++){
fin>>c1>>a1>>a2;
if(c1 == 1){
tata = rettata(a1);
unite(tata,rettata(a2));
}else if(c1 == 2){
if(rettata(a1) == rettata(a2)){
fout<<"DA"<<endl;
}else{
fout<<"NU"<<endl;
}
}
}
return 0;
}