Pagini recente » Cod sursa (job #2277757) | Cod sursa (job #1691940) | Cod sursa (job #1356857) | Cod sursa (job #449748) | Cod sursa (job #1961956)
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int n,m,i,x,y,k,nr,st[500005],e[500005],start;
bool eulerian;
vector <int> v[100005];
/*void dfs(int x)
{
int nod;
st[++k]=x;
while (v[st[k]].size()==0 && k>0)
e[++nr]=st[k--];
if (k>0)
{
nod=v[st[k]].back();
v[st[k]].pop_back();
v[nod].erase(find(v[nod].begin(),v[nod].end(),st[k]));
dfs(nod);
}
}*/
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=m; i++)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
start=x;
}
eulerian=true;
for (i=1; i<=n&&eulerian==true; i++)
if (v[i].size()%2==1)
eulerian=false;
if (eulerian==false)
{
printf("-1\n");
return 0;
}
k=1;st[k]=start;
while(k>0){
if(v[st[k]].size()>0){
int nod=v[st[k]].back();
v[st[k]].pop_back();
v[nod].erase(find(v[nod].begin(),v[nod].end(),st[k]));
k++;
st[k]=nod;
}
else{
e[++nr]=st[k--];
}
}
if(nr-1!=m){
printf("-1\n");
return 0;
}
for (i=1; i<nr; i++)
printf("%d ",e[i]);
printf("\n");
return 0;
}