Pagini recente » Cod sursa (job #552230) | Cod sursa (job #1644358) | Cod sursa (job #263282) | Cod sursa (job #971286) | Cod sursa (job #1368527)
# include <cstdio>
# include <vector>
# include <stack>
# include <algorithm>
# define pb push_back
# define N 100010
using namespace std;
int n,m,x,y;
vector <int> G[N];
vector <int> sol;
stack <int> st;
void ciclu(int x)
{
st.push(x);
while(!st.empty())
{
int nod=st.top();
if(G[nod].size())
{
int last=G[nod].back();
G[nod].pop_back();
st.push(last);
G[last].erase(find(G[last].begin(),G[last].end(),nod));
}
else sol.pb(nod),st.pop();
}
}
int main()
{
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for(int i=1; i<=m; ++i)
{
scanf("%d %d", &x, &y);
G[x].pb(y);
G[y].pb(x);
}
for(int i=1; i<=n; ++i)
if(G[i].size()&1)
{
printf("-1\n");
return 0;
}
else ciclu(1);
for(int i=0; i<sol.size(); ++i)
printf("%d ", sol[i]);
fclose(stdin);
fclose(stdout);
return 0;
}