Pagini recente » Cod sursa (job #1473439) | Monitorul de evaluare | Cod sursa (job #624465) | Cod sursa (job #1456777) | Cod sursa (job #2397153)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int main()
{
int N,M,x,y,compCur,compFor;
short cod;
FILE *in=fopen("disjoint.in","r");
FILE *out=fopen("disjoint.out","w");
fscanf(in,"%i %i",&N,&M);
vector<vector<int>>nod_comp(N+1);
vector<int>comp(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++)
{
fscanf(in,"%i %i %i",&cod,&x,&y);
if(cod == 1)
{
if(nod_comp[comp[x]].size() > nod_comp[comp[y]].size())
{
compCur = comp[x];
compFor = comp[y];
for(auto z : nod_comp[compFor])
{
comp[z] = compCur;
nod_comp[compCur].push_back(z);
}
nod_comp[compFor].clear();
}
else
{
compCur = comp[y];
compFor = comp[x];
for(auto z : nod_comp[compFor])
{
comp[z] = compCur;
nod_comp[compCur].push_back(z);
}
nod_comp[compFor].clear();
}
}
else
(comp[x] == comp[y])?fprintf(out,"DA\n"):fprintf(out,"NU\n");
}
return 0;
}