Pagini recente » Cod sursa (job #2786903) | Cod sursa (job #2205304) | Cod sursa (job #2319101) | Cod sursa (job #485258) | Cod sursa (job #2706308)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int TT[100005];
int H[100005];
int root(int a){
while(TT[a] != a){
a = TT[a];
}
return a;
}
void unite(int a, int b){
a=root(a);
b=root(b);
if(H[a] > H[b]){
TT[b] = a;
H[a] = max(H[a],H[b]+1);
}else{
TT[a] = b;
H[b] = max(H[b],H[a]+1);
}
}
int main() {
int n,m,x,y,cod,i;
fin>>n>>m;
for(i = 1; i <= n; i++){
TT[i]=i;
H[i]=1;
}
for(i = 1; i <= m; i++){
fin>>cod>>x>>y;
if(cod == 1){
unite(x,y);
}else if(cod == 2){
if(root(x) == root(y)){
fout<<"DA"<<'\n';
}else{
fout<<"NU"<<'\n';
}
}
}
return 0;
}