Pagini recente » Cod sursa (job #810564) | Rating Marius Aiordachioaei (wilversings) | Cod sursa (job #2272449) | Diferente pentru schimbare-borland/alternativa intre reviziile 5 si 6 | Cod sursa (job #2419782)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n, m, fx, fy, x, y, operatie, tata[100003], grad[100003];
int findFather(int x)
{
if (tata[x] == x)
return x;
else return findFather(tata[x]);
}
int main()
{
in >> n >> m;
for (int i = 1; i <= m; i++)
{
tata[i] = i;
grad[i] = 1;
}
for (int i = 1; i <= m; i++)
{
in >> operatie >> x >> y;
fx = findFather(x);
fy = findFather(y);
if (operatie == 1)
{if (grad[fx] < grad[fy])
{
tata[fx] = fy;
grad[fy] += grad[fx];
}
else
{
tata[fy] = fx;
grad[fx] += grad[fy];
}}
else if(operatie==2)
{
if(findFather(x)==findFather(y))
out<<"DA"<<'\n';
else out<<"NU"<<'\n';
}
}
return 0;
}