Pagini recente » Cod sursa (job #1975899) | Cod sursa (job #1303276) | Cod sursa (job #603659) | Cod sursa (job #1261801) | Cod sursa (job #2390674)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int comp[100001],n;
vector <vector<int>> nod_comp;
void reuniune(int x, int y)
{
int nrx=nod_comp[comp[x]].size(),nry=nod_comp[comp[y]].size();
if(nrx<nry) swap(x,y);
for(auto i:nod_comp[y])
{comp[i]=comp[x];
nod_comp[x].push_back(i);}
nod_comp[y].clear();
}
int main()
{
int m;
fin>>n>>m;
nod_comp= vector <vector<int> > (n+1);
for(int i=1;i<=n;i++)
{
comp[i]=i;
nod_comp[i].push_back(i);
}
for(int i=1;i<=m;i++)
{
int cod,x,y;
fin>>cod>>x>>y;
if(cod==1) reuniune(x,y);
if(cod==2)
{
if(comp[x]==comp[y]) fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}