Pagini recente » Cod sursa (job #2355932) | Cod sursa (job #2833039) | Cod sursa (job #1373561) | Cod sursa (job #866915) | Cod sursa (job #346372)
Cod sursa(job #346372)
#include<stdio.h>
int op;
int x;
int y;
int p[100005];
int r[100005];
int N;
int M;
int FindSet(int x)
{
if (p[x] != x)
p[x] = FindSet(p[x]);
return p[x];
}
void Union(int x, int y)
{
int r1 = FindSet(x);
int r2 = FindSet(y);
if (r[r1] > r[r2])
p[r2] = r1;
else
{
if (r[r1] == r[r2]) r[r2]++;
p[r1] = r2;
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d", &N, &M);
for(int i = 1; i <= N; i++)
p[i] = i;
while (M)
{
scanf("%d %d %d", &op, &x, &y);
if (op == 1)
{
Union(x, y);
}
if (op == 2)
{
if (FindSet(x) == FindSet(y))
printf("DA\n");
else
printf("NU\n");
}
M--;
}
return 0;
}