Pagini recente » Cod sursa (job #307800) | Cod sursa (job #463530) | Cod sursa (job #2456558) | Cod sursa (job #3137385) | Cod sursa (job #2670827)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int Nmax = 1e5 + 5;
int N;
int T[Nmax];
void unire(int x, int y)
{
T[x] = y;
}
int radacina(int nod)
{
int rad = nod;
while(T[rad] != rad)
rad = T[rad];
while(T[nod] != rad)
{
int y = T[nod];
unire(nod, rad);
nod = y;
}
return rad;
}
int main()
{
in>>N;
int t;
for(int i = 1; i <= N; i++)
T[i] = i;
for(in>>t; t; t--)
{
int x, y, op;
in>>op>>x>>y;
if(op == 1)
{
unire(x, y);
}
else
{
int X = radacina(x);
int Y = radacina(y);
if(X == Y)
out<<"DA\n";
else
out<<"NU\n";
}
}
}