Pagini recente » Cod sursa (job #2315666) | Cod sursa (job #2127970) | Cod sursa (job #1115405) | Cod sursa (job #2677203) | Cod sursa (job #1206811)
#include <cstdio>
using namespace std;
#define MAX 100001
int tata[MAX], grad[MAX], n, m;
int findtata(int nod);
void reuneste(int a, int b);
int main()
{
int i, a, b, cod;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i=1; i<=n; i++) tata[i] = i, grad[i] = 1;
for(i=1; i<=m; i++){
scanf("%d%d%d", &cod, &a, &b);
if(cod==1) reuneste(findtata(a), findtata(b));
else
if(findtata(a)==findtata(b)) printf("DA\n");
else printf("NU\n");
}
return 0;
}
int findtata(int nod){
if(nod==tata[nod]) return nod;
int t = findtata(tata[nod]);
tata[nod] = t;
return t;
}
void reuneste(int a, int b)
{
if(grad[a]>=grad[b])
tata[b] = a, grad[a] += grad[b];
else reuneste(b, a);
}