Pagini recente » Cod sursa (job #2929022) | Cod sursa (job #908647) | Cod sursa (job #1080682) | Cod sursa (job #2944686) | Cod sursa (job #1611021)
#include<fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int T[100010], N, Q;
void join(int x, int y)
{
while (T[x]>0)
x = T[x];
while (T[y]>0)
y = T[y];
if (T[x] < T[y])
{
T[x] += T[y];
T[y] = x;
}
else
{
T[y] += T[x];
T[x] = y;
}
}
bool check(int x, int y)
{
while (T[x]>0)
x = T[x];
while (T[y]>0)
y = T[y];
return (x == y);
}
int main()
{
in >> N>>Q;
for (int i = 1;i <= N;++i)
T[i] = -1;
for (int i = 1;i <= Q;++i)
{
int op, x, y;
in >> op >> x >> y;
if (op == 1)
join(x, y);
else if (check(x, y))
out << "DA\n";
else
out << "NU\n";
}
return 0;
}