Pagini recente » Cod sursa (job #860664) | Cod sursa (job #126039) | Cod sursa (job #990506) | Statistici Furtuna-Cola Andrei Alexandru (KitsuRaine) | Cod sursa (job #2670840)
#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];
int y;
while(T[nod] != nod)
{
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;
int X = radacina(x);
int Y = radacina(y);
if(op == 1){
if(X != Y)
unire(X, Y);
}
else
{
if(X == Y)
out<<"DA\n";
else
out<<"NU\n";
}
}
}