Pagini recente » Cod sursa (job #2945732) | Cod sursa (job #2945728) | Cod sursa (job #2086622) | Cod sursa (job #3225509) | Cod sursa (job #475603)
Cod sursa(job #475603)
#include <fstream>
#define nmax 100001
using namespace std;
int main()
{
int N, M, c, d, e, x, y, i, j, vec[nmax];
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
fin >> N >> M;
for (c = 1; c <= N; ++c)
{
vec[c] = -1;
}
while (M--)
{
fin >> c >> x >> y;
if (c == 1)
{
for (i = x; vec[i] > 0; i = vec[i]);
for (j = y; vec[j] > 0; j = vec[j]);
if (vec[i] > vec[j])
{
vec[i] = j;
c = j;
}
else if (vec[i] < vec[j])
{
vec[j] = i;
c = i;
}
else
{
vec[i] = j;
--vec[j];
c = j;
}
for (i = x; vec[i] > 0; i = d)
{
d = vec[i];
vec[i] = c;
}
for (j = y; vec[j] > 0; j = d)
{
d = vec[j];
vec[j] = c;
}
}
else
{
for (i = x; vec[i] > 0; i = vec[i]);
c = i;
for (j = y; vec[j] > 0; j = vec[j]);
d = j;
if (i == j)
{
fout << "DA" << '\n';
}
else
{
fout << "NU" << '\n';
}
for (i = x; vec[i] > 0; i = e)
{
e = vec[i];
vec[i] = c;
}
for (j = y; vec[j] > 0; j = e)
{
e = vec[j];
vec[j] = d;
}
}
}
fin.close();
fout.close();
return 0;
}