Pagini recente » Profil AlexandraMatasa | Cod sursa (job #1837671) | Cod sursa (job #161464) | Cod sursa (job #1135946) | Cod sursa (job #2843349)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int dim=1e5+9;
vector<int>v[dim];
map<pair<int,int>,int>mymap;
stack<int>stiva;
int n,m;
bool muchie(int x,int y){
if(x>y) swap(x,y);
return mymap[{x,y}];
}
void operatie(int x,int y,int op){
if(x>y) swap(x,y);
mymap[{x,y}]+=op;
}
void dfs(int x){
stiva.push(x);
if(stiva.size()==m){
while(!stiva.empty()){
fout<<stiva.top()<<' ';
stiva.pop();
}
exit(0);
}
for(int y:v[x]){
if(muchie(x,y)){
operatie(x,y,-1);
dfs(y);
operatie(x,y, 1);
}
}
stiva.pop();
}
signed main(){
fin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
operatie(x,y,1);
}
for(int i=1;i<=n;i++){
if(v[i].size()%2==1){
fout<<-1;
return 0;
}
}
dfs(1);
fout<<-1;
}