Pagini recente » Istoria paginii runda/runda_3_sediul_turnurilor_minime | Cod sursa (job #1582044) | Cod sursa (job #221479) | Istoria paginii runda/concurs_freshmen_3 | Cod sursa (job #419956)
Cod sursa(job #419956)
#include <stdio.h>
#include <list>
#define IN "ciclueuler.in"
#define OUT "ciclueuler.out"
#define Lg 500005
#define Lg1 100005
using namespace std;
list <int> L[Lg];
list <int> :: iterator IT;
int poz,N,M;
int Grad[Lg],Sir[Lg<<1];
void Read()
{
int a,b;
scanf ("%d %d",&N,&M);
for (int i=0;i<M;i++)
{
scanf ("%d %d",&a,&b);
Grad[a]++;
Grad[b]++;
L[a].push_back(b);
L[b].push_back(a);
}
}
void Solve()
{
int Top,Nod;
Sir[poz=1]=1;
while(poz)
{
Nod=Sir[poz];
if (!L[Nod].empty())
{
Top=L[Nod].front();
L[Nod].pop_front();
for (IT=L[Top].begin() ; IT!=L[Top].end() , *IT!=Nod; IT++);
L[Nod].erase(IT);
Sir[++poz]=Top;
}
else
printf("%d ",Sir[poz--]);
}
}
int main ()
{
freopen (IN ,"r", stdin);
freopen (OUT ,"w", stdout);
Read();
Solve();
return 0;
}