Pagini recente » Cod sursa (job #2379894) | Istoria paginii runda/miercuri_10/clasament | Cod sursa (job #771512) | Cod sursa (job #1058300) | Cod sursa (job #2549545)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
unsigned int * par;
unsigned int * rang;
unsigned int parent(unsigned int x)
{
if(par[x] == 0){
return x;
}
par[x] = parent(par[x]);
return par[x];
}
int main()
{
unsigned int n, m, x, y, px, py;
char op;
fin >> n >> m;
par = new unsigned int[n + 1]();
rang = new unsigned int[n + 1]();
while(m){
fin >> op >> x >> y;
px = parent(x);
py = parent(y);
switch(op){
case '1':
if(rang[px] > rang[py]){
par[py] = px;
} else {
par[px] = py;
if(rang[px] == rang[py]){
rang[py]++;
}
}
break;
case '2':
if(px == py){
fout << "DA\n";
} else {
fout << "NU\n";
}
break;
}
m--;
}
return 0;
}