Pagini recente » Cod sursa (job #1076915) | Cod sursa (job #1031651) | Cod sursa (job #499441) | Cod sursa (job #1402787) | Cod sursa (job #1751409)
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <stack>
#include <bitset>
using namespace std;
multiset <int> q[100005];
stack <int> s;
vector <int> ans;
bitset <100005> viz;
void dfs(int node){
viz[node] = 1;
for(auto it : q[node]){
if(viz[it] == 0){
dfs(it);
}
}
}
int main(){
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
int i, n, m, x, y;
scanf("%d %d", &n, &m);
for(i = 1;i <= m;i++){
scanf("%d %d", &x, &y);
q[x].insert(y);
q[y].insert(x);
}
for(i = 1;i <= n;i++){
if(q[i].size()%2 == 1){
printf("-1");
return 0;
}
}
dfs(1);
for(i = 2;i <= n;i++){
if(viz[i] == 0){
printf("-1");
return 0;
}
}
s.push(1);
while(s.empty() == false){
x = s.top();
if(q[x].empty() == true){
s.pop();
ans.push_back(x);
continue;
}
auto it = q[x].begin();
s.push(*it);
q[*it].erase(q[*it].find(x));
q[x].erase(q[x].begin());
}
for(auto it : ans){
printf("%d ",it);
}
return 0;
}