Pagini recente » Cod sursa (job #2578253) | Cod sursa (job #17370) | Cod sursa (job #151169) | Cod sursa (job #2054195) | Cod sursa (job #2443036)
#include<fstream>
#include<vector>
using namespace std;
#define maxn 100005
#define maxm 500005
int n,m,g[maxn],stiva[maxm],rez[maxm] , prim=1, ultim=1,k=1;
vector <int>v[maxn];
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
void read(){
int x,y;
for(int i=1; i<=m; i++){
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
g[x]++; g[y]++;
}
}
void euler(){
while(prim<=ultim&&prim>0){
while(g[stiva[prim]]){
stiva[++ultim]=v[stiva[prim]][g[stiva[prim]]-1];
g[stiva[prim]]--;
for(int i=0; i<g[stiva[ultim]]; i++){
if(v[stiva[ultim]][i]==stiva[prim]){
v[stiva[ultim]].erase (v[stiva[ultim]].begin()+i);
g[stiva[ultim]]--;
break;
}
}
prim++;
}
rez[k++]=stiva[prim];
prim--;
ultim--;
}
}
int main(){
cin>>n>>m;
read();
stiva[1]=1;
euler();
k-=2;
if(k!=m)
cout<<-1;
else
for(int i=1; i<=k; i++)
cout<<rez[i]<<' ';
return 0;
}