Pagini recente » Cod sursa (job #501164) | Cod sursa (job #1905197) | Cod sursa (job #499000) | Cod sursa (job #2485530) | Cod sursa (job #1593095)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int p[10000],rang[100000];
int GasesteMultime(int x)
{
if ( p[x] == x)
return x;
p[x] = GasesteMultime(p[x]);
};
int FormeazaMultime(int x)
{
rang[x] = 0;
p[x] = x;
};
void Uneste(int x, int y)
{
if (rang[x] > rang[y])
p[y] = x,rang[x]++;
else
p[x] = y,rang[y]++;
}
void Reuneste(int x, int y)
{
Uneste(GasesteMultime(x),GasesteMultime(y));
}
int main()
{
int n,m,op,x,y;
in >> n >> m;
for(int i = 1 ; i <= n ; i ++)
FormeazaMultime(i);
while(m--)
{
in >> op >> x >> y;
switch(op)
{
case 1: Reuneste(x,y); break;
case 2: if (GasesteMultime(x) == GasesteMultime(y))
out<<"DA\n";
else
out<<"NU\n";
break;
}
}
return 0;
}