Pagini recente » Cod sursa (job #140583) | Cod sursa (job #746448) | Cod sursa (job #2982541) | Cod sursa (job #86630) | Cod sursa (job #755528)
Cod sursa(job #755528)
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
#define nmax 100010
int Father[nmax], Rank[nmax], N, M, x, y, c;
int Find(int x)
{
if(x != Father[x]) x = Find(Father[x]);
return Father[x];
}
void Unite(int x, int y)
{
if(Rank[x] > Rank[y]) Father[y] = x;
else Father[x] = y;
if(Rank[x] == Rank[y]) Rank[x]++;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int i;
scanf("%i %i", &N, &M);
for(i = 1; i <= N; i++) Father[i] = i, Rank[i] = 1;
for(i = 1; i <= M; i++)
{
scanf("%i %i %i", &c, &x, &y);
if(c == 1) Unite(x, y);
else if(Find(x) == Find(y)) printf("DA\n"); else printf("NU\n");
}
return 0;
}