Pagini recente » Cod sursa (job #1356011) | Cod sursa (job #1850803) | Cod sursa (job #2136055) | Cod sursa (job #578394) | Cod sursa (job #364880)
Cod sursa(job #364880)
#include<iostream>
using namespace std;
//definim clasa nod
class nod
{
public:
int nr;
int noduri;
nod *urmator;
nod *ultim;
nod(void):nr(0),noduri(0),urmator(NULL),ultim(NULL){};
};
//definim lista
nod v[50001];
int folosit[50001];
int coada[50001];
int poz=1;
void introducere(int p)
{
if(folosit[p]==0)
{
folosit[p]=1;
coada[poz]=p; poz++;
int aux;
nod *s=v[p].urmator;
for(aux=1; aux<=v[p].noduri; aux++)
{
if(folosit[s->nr]==0)introducere(s->nr);
s=s->urmator;
}
}
}
int main(void)
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
int n,m,i,x,y;
cin>>n>>m;
//creem vectorul cu listele de noduri
for(i=1; i<=m; i++)
{
cin>>x>>y;
if(v[x].noduri==0)
{
nod *var=new nod;
var->nr=y;
var->urmator=NULL;
v[x].noduri=1;
v[x].urmator=var;
v[x].ultim=v[x].urmator;
}
else
{
nod *var=new nod;
var->nr=y;
var->urmator=NULL;
v[x].ultim->urmator=var;
v[x].ultim=var;
v[x].noduri++;
}
}
for(i=1; i<=n; i++){
if(folosit[i]==0)introducere(i);
}
for(i=1; i<poz; i++)cout<<coada[i]<<" ";
return 0;
}