Pagini recente » Cod sursa (job #1737039) | Cod sursa (job #1230735) | Cod sursa (job #715503) | Cod sursa (job #2077015) | Cod sursa (job #1815776)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100001], h[100001], n , m;
int radacina(int x)
{
if(t[x] == 0)
return x;
t[x] = radacina(t[x]);
return t[x];
}
void reuniune(int x, int y)
{
int rx = radacina(x) , ry = radacina(y);
if(h[rx] < h[ry])
t[rx] = ry;
else
if(h[rx] > h[ry])
t[ry] = rx;
else
if(h[rx] == h[ry])
{
t[rx] = ry;
h[ry]++;
}
}
bool verif(int x, int y)
{
return (radacina(x) == radacina(y));
}
int main()
{
int i ,j , k;
f >> n >> m;
while(m != 0)
{
f >> i >> j >> k;
if(i == 1)
reuniune(j, k);
else
{
if(verif(j, k))
g << "DA" << '\n';
else
g << "NU" << '\n';
}
m--;
}
}