Pagini recente » Cod sursa (job #2898414) | Cod sursa (job #1648480) | Cod sursa (job #56352) | Cod sursa (job #2716387) | Cod sursa (job #2830912)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tata[100001], rang[100001];
int radacina (int i)
{
while (tata[i] > 0)
i = tata[i];
return i;
}
void unesc (int i, int j)
{
int radi, radj;
radi = radacina (i);
radj = radacina (j);
if (rang[radi] > rang[radj])
tata[radj] = radi;
else
{
tata[radi] = radj;
if (rang[radi] == rang[radj])
rang[radj] += 1;
}
}
int main ()
{
int n, m, intreb, i, j, k;
f >> n >> m;
for (k = 1; k <= m; k += 1)
{
f >> intreb >> i >> j;
if (intreb == 1)
unesc (i, j);
else
{
if (radacina (i) == radacina (j))
g << "DA";
else
g << "NU";
g << '\n';
}
}
return 0;
}