Pagini recente » Borderou de evaluare (job #764124) | Borderou de evaluare (job #3201532) | Atasamentele paginii Profil CM97 | Borderou de evaluare (job #3345926) | Cod sursa (job #3317618)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int sef[100001],n,m;
int boss(int nod)
{
if(sef[nod] == nod)
return nod;
else
return sef[nod] = boss(sef[nod]);
}
void unite(int x, int y)
{
int sef_x = boss(x);
int sef_y = boss(y);
sef[sef_x] = sef_y;
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++)
sef[i] =i;
for(int i = 1; i <= m; i++)
{
int op,x,y;
fin >> op >> x >> y;
if(op == 1)
unite(x,y);
else
{
x = boss(x);
y = boss(y);
if(sef[x] == sef[y])
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}