Pagini recente » Cod sursa (job #2319804) | Cod sursa (job #3237841) | Cod sursa (job #2711837) | Cod sursa (job #3228828) | Cod sursa (job #2480498)
#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 n,m;
int findtata(int a){
int aux;
aux = a;
while(T[aux] > 0){
aux = T[aux];
}
if(T[a] > 0)
T[a] = aux;
return aux;
}
void unire(int a,int b){
if(T[a] <= T[b]){
T[a] += T[b];
T[b] = a;
}
if(T[a] > T[b]){
T[b] += T[a];
T[a] = b;
}
}
int main()
{
int a1,a2,c1,i;
fin>>n>>m;
for(i = 1; i <= n; i++){
T[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;
}