Pagini recente » Monitorul de evaluare | Cod sursa (job #2796809) | Cod sursa (job #367599) | Cod sursa (job #1811037) | Cod sursa (job #2926817)
#include <bits/stdc++.h>
using namespace std;
int const nmax = 1e5 + 5;
int n , q;
int T[nmax];
int R[nmax];
int rad(int nod){
if(T[nod] == nod)return nod;
int p = rad(T[nod]);
T[nod] = p;
return p;
}
int main()
{
freopen("disjoint.in" , "r" , stdin);
freopen("disjoint.out" , "w" ,stdout);
cin.tie(0)->sync_with_stdio(0);
cout.tie(0);
cin >> n >> q;
for(int i = 1;i <= n; ++i)T[i] = i;
while(q--){
int cod , x , y;
cin >> cod >> x >> y;
if(cod == 1){
int p = rad(x);
int q = rad(y);
if(R[p] > R[q])
T[q] = p;
else if(R[p] < R[q])T[p] = q;
else
T[p] = q , R[q]++;
}
else cout << (rad(x) == rad(y) ? "DA" : "NU") << "\n";
}
}