Pagini recente » Cod sursa (job #2849827) | Cod sursa (job #2169651) | Cod sursa (job #1442624) | Cod sursa (job #2741163) | Cod sursa (job #504004)
Cod sursa(job #504004)
#include <stdio.h>
#include <set>
using namespace std;
multiset<int> v[100001];
int n,m,i,x1,x2,c[100000],nr;
void euler(int x)
{
multiset<int>::iterator it,t;
for (it=v[x].begin();it!=v[x].end();)
{
t=v[*it].find(x);
if (t!=v[*it].end()) v[*it].erase(t);
t=it;
v[x].erase(v[x].begin());
euler(*it);
it=v[x].begin();
}
c[nr++]=x;
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=0;i<m;i++)
{
scanf("%d%d",&x1,&x2);
v[x1].insert(x2);
v[x2].insert(x1);
}
for (i=1;i<=n;i++)
if (v[i].size()&1)
{
printf("-1\n");
return 0;
}
nr=0;
euler(1);
for (i=1;i<nr;i++) printf("%d ",c[i]);
return 0;
}