Pagini recente » Cod sursa (job #2598772) | Cod sursa (job #1978950) | Cod sursa (job #2478403) | Cod sursa (job #1212178) | Cod sursa (job #3176873)
int rank[100002];
int p[100002];
int n;
int i;
int x;
int y;
int cod;
int m;
int FindSet(int x)
{
if (x != p[x])
p[x] = FindSet(p[x]);
return p[x];
}
void Union(int x, int y)
{
int r1, r2;
r1 = FindSet(x);
r2 = FindSet(y);
if (rank[r1] > rank[r2])
p[r2] = r1;
else
{
if (rank[r1] == rank[r2]) rank[r2]++;
p[r1] = r2;
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d", &n, &m);
for(i = 1; i <= n; i++)
p[i] = i;
for(i = 1; i <= m; i++)
{
scanf("%d %d %d", &cod, &x, &y);
if (cod == 1)
Union(x,y);
if (cod == 2)
{
int r1 = FindSet(x);
int r2 = FindSet(y);
if (r1 != r2) printf("NU\n");
else printf("DA\n");
}
}
return 0;
}