Pagini recente » Cod sursa (job #2825039) | Cod sursa (job #338622) | Cod sursa (job #107693) | Cod sursa (job #3170724) | Cod sursa (job #2038492)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
#define MAX 100000
int p[MAX];
int rang[MAX];
int N;
int Find(int x)
{
if (p[x] != x)
p[x] = Find(p[x]);
return p[x];
}
void Union(int x, int y)
{
int px = Find(x);
int py = Find(y);
if (rang[px] >= rang[py])
{
p[py] = px;
}
else
{
p[px] = py;
}
}
int main()
{
int M;
in >> N >> M;
for (int i = 0; i < N; i++) rang[i] = 0, p[i] = i;
while (M--)
{
int opt, x, y;
in >> opt >> x >> y;
x--; y--;
switch (opt)
{
case 1:
Union(x, y);
break;
case 2:
if (Find(x) == Find(y))
out << "DA";
else
out << "NU";
out << '\n';
break;
}
}
}