Pagini recente » Cod sursa (job #2196932) | Cod sursa (job #2740837) | Cod sursa (job #1968123) | Cod sursa (job #572872) | Cod sursa (job #1171135)
#include <fstream>
#include <vector>
using namespace std;
const int Nmax = 100005;
int d[Nmax]; // radacina
int s[Nmax]; // marimea multimii
int parent(int x)
{
while(d[x] != x)
{
d[x] = d[d[x]];
x = d[x];
}
return x;
}
void join(int x, int y)
{
int px = parent(x), py = parent(y);
if (px != py)
{
if (s[px] >= s[py])
{
d[py] = px;
s[px] += s[py];
} else
{
d[px] = py;
s[py] += s[px];
}
}
return;
}
bool query(int x, int y)
{
return parent(x) == parent(y);
}
int main()
{
ifstream f ("disjoint.in");
ofstream g ("disjoint.out");
int N, M, o, x, y;
f >> N >> M;
for (int i = 0; i <= N; i++)
{
d[i] = i;
s[i] = 1;
}
for (int i = 0; i < M; i++)
{
f >> o >> x >> y;
if (o == 1)
join(x,y);
else if (o == 2)
g << (query(x,y) ? "DA" : "NU") << '\n';
}
return 0;
}