Pagini recente » Istoria paginii runda/vacanta_10_1/clasament | Cod sursa (job #1182696) | Cod sursa (job #2423407) | Cod sursa (job #2408610) | Cod sursa (job #2423373)
#include <iostream>
#include <fstream>
using namespace std;
int tata[500001];
int grad[500001];
int find_tata(int node)
{
if (tata[node] == node)
return node;
tata[node] = find_tata(tata[node]);
return tata[node];
}
int main()
{
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int nrMult, nrOp, x, y, cod;
int tata_x, tata_y;
fin >> nrMult >> nrOp;
for (int i = 1; i <= nrMult; i++)
{
tata[i] = i;
grad[i] = 1;
}
for (int i = 0; i < nrOp; i++)
{
fin >> cod >> x >> y;
tata_x = find_tata(x);
tata_y = find_tata(y);
if (cod == 1)
{
if(tata_x<tata_y)
{
tata[tata_x] = tata_y;
grad[tata_y] += grad[tata_x];
}
else
{
tata[tata_y] = tata_x;
grad[tata_x] + -grad[tata_y];
}
}
else
{
if (tata_x = tata_y)
fout << "Da\n";
else fout << "Nu!\n";
}
}
return 0;
}