Pagini recente » Cod sursa (job #57944) | Cod sursa (job #3263258) | Cod sursa (job #1337370) | Cod sursa (job #2859281) | Cod sursa (job #2667933)
include<fstream>
#include<iostream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int LIM = 100005;
int N, M;
int T[LIM], RANG[LIM];
int find(int x)
{
if (T[x] == 0)
return x;
else
{
int y = find(T[x]);
T[x] = y;
return y;
}
}
void unite(int m1, int m2)
{
int T1 = find(m1);
int T2 = find(m2);
if (T1 != T2)
{
if (RANG[T1] < RANG[T2])
T[T1] = T2;
else
{
T[T2] = T1;
if (RANG[T1] == RANG[T2])
RANG[T1]++;
}
}
}
int main()
{
f >> N >> M;
int cod, x, y;
for (int i = 1; i <= M; i++)
{
f >> cod >> x >> y;
if (cod == 1)
unite(x, y);
else
{
if (find(x) == find(y))
g << "DA";
else
g << "NU";
g << '\n';
}
}
return 0;
}