Pagini recente » Solutii Summer Challenge, Runda 2 | Cod sursa (job #1746100) | Cod sursa (job #1928615) | Cod sursa (job #897159) | Cod sursa (job #2330797)
/**
Paduri de multimi disjuncte
infoarena: https://infoarena.ro/problema/disjoint
10/20p ?
**/
#include <fstream>
const int Dim = 100001;
int n, m;
int code, x, y;
int t[Dim];
int h[Dim];
void Solve();
void Union(int r1, int r2);
int Find(int x);
int main()
{
Solve();
return 0;
}
void Solve()
{
std::ifstream fin("disjoint.in");
std::ofstream fout("disjoint.out");
fin >> n >> m;
for(int i = 1; i <= n; ++i)
t[i] = i;
for(int i = 1; i <= m; ++i)
{
fin >> code >> x >> y;
if (code == 1)
Union(x, y);
else
{
if(Find(x) == Find(y))
fout << "DA\n";
else
fout << "NU\n";
}
}
fin.close();
fout.close();
}
void Union(int r1, int r2)
{
t[Find(y)] = Find(x);
}
int Find(int x)
{
if (x == t[x])
return x;
return t[x] = Find(t[x]);
}