Pagini recente » Cod sursa (job #1714364) | Cod sursa (job #883244) | Cod sursa (job #3149141) | Cod sursa (job #2671085) | Cod sursa (job #2824824)
#include <bits/stdc++.h>
using namespace std;
const int nmax=int(1e5);
vector <int> adj[nmax],ans;
vector <pair<int,int>> M;
vector <bool> elim;
int n,m;
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d %d ",&n,&m);
for(int i=1,x,y;i<=m;++i){
cin>>x>>y;
M.push_back({x,y});
elim.push_back(0);
adj[x].push_back(i-1);
adj[y].push_back(i-1);
}
for(int i=1;i<=n;++i)
if(adj[i].size()%2==1){
cout<<"-1";
return 0;
}
stack <int> st;
st.push(1);
while(!st.empty()){
int nod=st.top();
if(adj[nod].size()){
int x=adj[nod].back();
adj[nod].pop_back();
if(!elim[x]){
elim[x]=1;
int p=M[x].second;
if(p==nod)
p=M[x].first;
st.push(p);
}
}
else{
ans.push_back(nod);
st.pop();
}
}
ans.pop_back();
for(auto x:ans)
cout<<x<<" ";
}