Pagini recente » Cod sursa (job #1490971) | Cod sursa (job #1248301) | Cod sursa (job #2832561) | Cod sursa (job #1039447) | Cod sursa (job #2390583)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int comp[100000],n;
vector <vector<int>> nod_comp;
void reuniune(int x, int y)
{
int nrx=nod_comp[x].size(),nry=nod_comp[y].size();
if(nrx>=nry)
{
int aux=x;
x=y;
y=aux;
}
int aux=comp[y];
for(int i=1;i<=n;i++)
if(comp[i]==aux) {comp[i]=comp[x];
nod_comp[x].push_back(i);}
}
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;
}