Pagini recente » Cod sursa (job #1260793) | Cod sursa (job #2655775) | Cod sursa (job #2138805)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
#define maxn 100010
int p[maxn];
int rang[maxn]{0};
int gasesteMultime(int x)
{
if(x == p[x])
return x;
else
x = gasesteMultime(p[x]);
}
void reuneste(int x, int y)
{
int px = gasesteMultime(x);
int py = gasesteMultime(y);
if(rang[px]> rang[py])
{
p[y] =px;
rang[py]++;
}
else
{
p[x] = py;
rang[py]++;
}
}
int main()
{
int n,m,op,x,y;
in >> n >> m;
for(int i = 1 ; i<= n ; i++)
p[i] = i;
for(int i = 0 ; i <m ; i++)
{
in >> op >> x >> y;
if(op == 1)
reuneste(x,y);
else
{
if(gasesteMultime(x) == gasesteMultime(y))
out<<"DA\n";
else
out<<"NU\n";
}
}
}