Pagini recente » Cod sursa (job #2590200) | Cod sursa (job #308384) | Cod sursa (job #448393) | Cod sursa (job #709702) | Cod sursa (job #427156)
Cod sursa(job #427156)
#include <stdio.h>
#include <list>
#define IN "ciclueuler.in"
#define OUT "ciclueuler.out"
#define Lg 100001
using namespace std;
int n, m, a, b;
int Rez[Lg*5], nr, top, nod;
list <int> :: iterator it;
list <int> V[Lg];
void citire()
{
scanf ("%d %d", &n, &m);
for (int i=0; i<m; i++)
{
scanf ("%d %d", &a, &b);
V[a].push_back(b);
V[b].push_back(a);
}
}
void solve()
{
for (int i=1;i<=n;i++)
if (V[i].size()%2==1)
{
printf("-1\n");
return;
}
Rez[nr = 1] = 1;
while (nr)
{
top=Rez[nr];
if (!V[top].empty())
{
nod = V[top].front();
V[top].pop_front();
for (it=V[nod].begin(); it!=V[nod].end() && *it!=top; it++);
V[nod].erase(it);
Rez[++nr] = nod;
}
else
printf("%d ",Rez[nr--]);
}
}
int main()
{
freopen (IN ,"r", stdin);
freopen (OUT,"w", stdout);
citire();
solve();
return 0;
}