Pagini recente » Cod sursa (job #1535885) | Cod sursa (job #2892137) | Cod sursa (job #1689444) | Cod sursa (job #2876646) | Cod sursa (job #2480838)
#include <bits/stdc++.h>
#define MOD 1999999973
#define ull unsigned long long
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int T[100005];
int R[100005];
int n,m;
int findtata(int a){
while(T[a] != a){
a = T[a];
}
return a;
}
void unire(int a,int b){
if(R[a] < R[b]){
T[a] = b;
}else if(R[a] > R[b]){
T[b] = a;
}else if(R[a] == R[b]){
T[a] = b;
R[b]++;
}
}
int main()
{
int a1,a2,c1,i;
fin>>n>>m;
for(i = 1; i <= n; i++){
T[i] = i;
R[i] = 1;
}
for(i = 1; i <= m; i++){
fin>>c1>>a1>>a2;
if(c1 == 2){
int aux1,aux2;
aux1 = findtata(a1);
aux2 = findtata(a2);
if(aux1 == aux2){
fout<<"DA"<<endl;
}else{
fout<<"NU"<<endl;
}
}else if(c1 == 1){
unire(findtata(a1),findtata(a2));
}
}
return 0;
}