Pagini recente » Cod sursa (job #1298146) | Cod sursa (job #1902763) | Cod sursa (job #2039295) | Cod sursa (job #3152671) | Cod sursa (job #2681284)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <set>
#include <stack>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
multiset<int> gra[100041];
int grad[100041];
int nxt = 0;
stack<int> sta;
void stakoneta(){
sta.push(1);
while(!sta.empty()){
int a = sta.top();
if(!gra[a].empty()){
int b = *gra[a].begin();
gra[a].erase(gra[a].begin());
gra[b].erase(gra[b].find(a));
sta.push(b);
}else{
sta.pop();
if(nxt != 0)fout << nxt << " ";
nxt = a;
}
}
}
int main(){
// ios_base::sync_with_stdio(false);
fin >> n >> m;
for(int i = 0; i < m; ++i){
int a, b;fin>> a >> b;
gra[a].insert(b);grad[a]++;
gra[b].insert(a);grad[b]++;
}
bool ok = true;;
for(int i = 1; i <= n; ++i){
if(grad[i]%2 != 0){
ok = false;
break;
}
}
if(ok)stakoneta();
else fout << -1;
return 0;
}