Pagini recente » Cod sursa (job #3160509) | Cod sursa (job #2804702) | Cod sursa (job #2327927) | Cod sursa (job #256106) | Cod sursa (job #2390721)
#include <fstream>
#include <vector>
#define NMAX 100001
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int comp[NMAX];
vector <vector<int> > L(NMAX);
int main()
{
int n,m;
f>>n>>m;
for (int i=1;i<=n;i++)
{
comp[i]=i;
L[i].push_back(i);
}
for (int i=1;i<=m;i++)
{
int cod,x,y;
f>>cod>>x>>y;
if (cod==1)
{
if (L[comp[x]].size()<L[comp[y]].size())
{
auto cx=L[comp[x]].begin(), cy=L[comp[x]].end();
for (auto i=cx; i!=cy; i++)
{
comp[(*i)]=comp[y];
L[comp[y]].push_back((*i));
}
//L[comp[x]].clear();
}
else
{
auto cx=L[comp[y]].begin(), cy=L[comp[y]].end();
for (auto i=cx; i!=cy; i++)
{
comp[(*i)]=comp[x];
L[comp[x]].push_back((*i));
}
//L[comp[y]].clear();
}
}
else
if (cod==2)
{
if (comp[x]==comp[y])
g<<"DA";
else g<<"NU";
g<<'\n';
}
}
return 0;
}