Pagini recente » Cod sursa (job #2918379) | Cod sursa (job #251920) | Cod sursa (job #1681195) | Cod sursa (job #2153470) | Cod sursa (job #2154054)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, k;
int v[100005], nr[100005];
int radacina(int x)
{
if (v[x] == 0) {
return x;
}
v[x] = radacina(v[x]);
return v[x];
}
void reunion(int x, int y)
{
int rx = radacina(x);
int ry = radacina(y);
if (nr[rx] < nr[ry]) {
v[rx] = ry;
nr[ry] += nr[rx];
}
else {
v[ry] = rx;
nr[rx] += nr[ry];
}
}
bool verifica(int x, int y)
{
return radacina(x) == radacina(y);
}
int main()
{
int x,y;
fin>>n>>m;
for (int i = 1; i <= m; i++) {
fin>>k>>x>>y;
if (k == 1) reunion(x,y);
else {
if (verifica(x,y)) {
fout<<"DA";
}
else {
fout<<"NU";
}
fout<<'\n';
}
}
}