Pagini recente » Cod sursa (job #1194428) | Cod sursa (job #584931) | Cod sursa (job #1843891) | Cod sursa (job #735765) | Cod sursa (job #2384773)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
list<int> graf[NMAX];
vector<int>sol;
int n,m,nr;
void citire();
void dfs(int x);
void mutare();
int main()
{int i;
citire();
for(i=1;i<=n;i++)
if(graf[i].size()%2==1)
{fout<<-1<<'\n';
exit(0);
}
dfs(1);
for(i=0;i<sol.size()-1;i++)
fout<<sol[i]<<' ';
return 0;
}
void citire()
{int i,x,y;
fin>>n>>m;
for(i=1;i<=m;i++)
{fin>>x>>y;
graf[x].push_back(y);
graf[y].push_back(x);
}
}
void dfs(int x)
{int vf;
while(!graf[x].empty())
{vf=graf[x].front();
graf[x].pop_front();
//graf[vf].remove(x);
graf[vf].erase(find(graf[vf].begin(),graf[vf].end(),x));
dfs(vf);
}
sol.push_back(x);
}
/*void mutare()
{int i,j,k=1;
if(!lgc)
for(i=1;i<=lg;i++)
ciclu[++lgc]=acum[i];
else
{for(i=1;ciclu[i]!=acum[1];i++);
for(j=lgc;j>i;j--)
ciclu[j+lg]=ciclu[j];
for(j=i;j<=i+lg;j++)
{ciclu[j]=acum[k];
k++;
}
lgc+=lg;
for(i=1;i<=lg;i++)
acum[i]=0;
lg=0;
}
}*/