Pagini recente » Cod sursa (job #456836) | Istoria paginii runda/oji-2018-11-12/clasament | Istoria paginii runda/oni2012_ziua1/clasament | Istoria paginii runda/rhle4myass | Cod sursa (job #2947110)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, parinte[100001];
int Find(int x)
{
if(parinte[x] == x)
return x;
else
{
parinte[x] = Find(parinte[x]);
return parinte[x];
}
}
void Union(int x, int y)
{
int rad_x;
int rad_y;
rad_x = Find(x);
rad_y = Find(y);
parinte[rad_y] = rad_x;
}
void Disjoint()
{
fin >> n >> m;
for(int i = 1; i <= n; ++i)
parinte[i] = i;
for(int i = 1; i <= m; ++i)
{
int op, x, y;
fin >> op >> x >> y;
if(op == 1)
Union(x,y);
else
{
int rad_x = Find(x);
int rad_y = Find(y);
if(rad_x == rad_y)
fout << "DA" << "\n";
else
fout << "NU" << "\n";
}
}
}
int main()
{
Disjoint();
return 0;
}