Pagini recente » Cod sursa (job #243834) | Cod sursa (job #2370693) | Cod sursa (job #928300) | Cod sursa (job #1469762) | Cod sursa (job #1096691)
#include <cstdio>
#define Nmax 100005
using namespace std;
FILE *fi = fopen("disjoint.in", "r");
FILE *fo = fopen("disjoint.out", "w");
int t[Nmax];
int nr[Nmax];
int m;
int n;
int main()
{
int cod;
int x;
int y;
fscanf(fi, "%d%d", &n, &m);
for (int i = 1; i <= n; i++)
t[i] = i, nr[i] = 1;
for (; m; m--)
{
fscanf(fi, "%d%d%d", &cod, &x, &y);
if (cod == 1)
{
if (nr[t[x]] >= nr[t[y]]) // x = x+y
{
nr[t[x]] = nr[t[x]] + nr[t[y]];
for(int i = 1, j = 1; i <= n && j <= nr[t[y]]; i++)
{
if (t[i] == y)
{
j++;
t[i] = t[x];
nr[i] = 0;
}
}
}
else // y = y+x
{
nr[t[y]] = nr[t[y]] + nr[t[x]];
for(int i = 1, j = 1; i <= n && j <= nr[t[x]]; i++)
{
if (t[i] == x)
{
j++;
t[i] = t[y];
nr[i] = 0;
}
}
}
}
else if (cod == 2)
{
if (t[x] == t[y]) fprintf(fo, "DA\n");
else fprintf(fo, "NU\n");
}
}
return 0;
}