Pagini recente » Cod sursa (job #2797962) | Cod sursa (job #2730165) | Cod sursa (job #1618319) | Cod sursa (job #1425174) | Cod sursa (job #2544245)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int NMAX=100004,MMAX=500004;
vector<int>g[NMAX],ans,st;
bool used[MMAX];
int n,m,from[MMAX],to[MMAX];
int main()
{
in>>n>>m;
for(int i=1,a,b;i<=m;i++){
in>>a>>b;
g[a].push_back(i);
g[b].push_back(i);
from[i]=a;
to[i]=b;
}
for(int i=1;i<=n;i++){
if(g[i].size()&1){
out<<-1;
return 0;}
}
st.push_back(1);
int node;
while(!st.empty()){
node=st.back();
if(!g[node].empty()){
int e=g[node].back();
g[node].pop_back();
if(!used[e]){
used[e]=1;
int dest=from[e]^to[e]^node;
st.push_back(dest);
}
}
else{
st.pop_back();
ans.push_back(node);
}
}
for(int i=0;i<ans.size()-1;i++)
out<<ans[i]<<" ";
return 0;
}