Pagini recente » Cod sursa (job #1498555) | Monitorul de evaluare | Cod sursa (job #2283902) | Cod sursa (job #1716972)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100005;
int far[NMAX], rang[NMAX];
inline void update(int a, int b) {
while(far[a]) a = far[a];
while(far[b]) b = far[b];
if(rang[a]>=rang[b])
far[b] = a;
else
far[a] = b;
}
inline void query(int a, int b) {
while(far[a]) a = far[a];
while(far[b]) b = far[b];
if(a==b)
puts("DA");
else
puts("NU");
}
int main(void) {
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int n, m, tsk, a, b;
scanf("%d%d",&n,&m);
for(int i=0; i<n; ++i)
rang[i] = 1;
while(m--) {
scanf("%d%d%d",&tsk,&a,&b);
switch(tsk) {
case 1:
update(a, b);
break;
case 2:
query(a, b);
break;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}