Pagini recente » Cod sursa (job #1864484) | Cod sursa (job #1155048) | Cod sursa (job #2213150) | Cod sursa (job #806450) | Cod sursa (job #2397239)
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,cod,x,y,k=0,nr1,nr2;
f>>n>>m;
int comp[n];
vector< vector <int> > nod_comp(n);
vector<int>::iterator ptr;
for(int i=1;i<=n;i++ )
comp[i]=0;
for(int i=1;i<=m;i++)
{
f>>cod>>x>>y;
if(cod==1)
{
if(comp[x]==0&& comp[y]==0)
{
comp[x]=++k;
comp[y]=k;
nod_comp[k].push_back(x);
nod_comp[k].push_back(y);
}
else if(comp[x]==0)
{
comp[x]=comp[y];
nod_comp[comp[y]].push_back(x);
}
else if(comp[y]==0)
{
comp[y]=comp[x];
nod_comp[comp[x]].push_back(y);
}
else if(comp[x]!=comp[y])
{
if(comp[x]<comp[y])
{nr1=comp[x];
nr2=comp[y];
}
else {
nr1=comp[y];
nr2=comp[x];
}
for(ptr = nod_comp[nr2].begin(); ptr != nod_comp[nr2].end(); ++ptr)
{
nod_comp[nr1].push_back(*ptr);
comp[*ptr]=nr1;
}
}
}
else
{
if(comp[x]==comp[y]) g<<"DA"<<"\n";
else g<<"NU"<<"\n";
}
}
return 0;
}