Pagini recente » Cod sursa (job #1018051) | Cod sursa (job #874930) | Cod sursa (job #1701868) | Cod sursa (job #3253957) | Cod sursa (job #2135643)
#include <cstdio>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
int n, m;
pair<int, int> muchii[500005];
vector<int> vecini[100005];
int viz[500005];
void citire(){
scanf("%d %d", &n, &m);
int x, y;
for(int i = 0; i < m; i++){
scanf("%d %d", &x, &y);
x--;
y--;
muchii[i] = {x, y};
vecini[x].push_back(i);
vecini[y].push_back(i);
}
}
void solve(){
for(int i = 0; i < m; i++){
if(vecini[i].size() % 2 != 0){
printf("-1");
return;
}
}
stack<int> Q;
Q.push(0);
while(!Q.empty()){
int x = Q.top();
if(vecini[x].size() > 0){
int y = vecini[x].back();
vecini[x].pop_back();
if(viz[y] == false){
viz[y] = true;
int x1 = muchii[y].first;
int x2 = muchii[y].second;
if(x2 == x){
swap(x1, x2);
}
Q.push(x2);
}
}
else{
Q.pop();
if(Q.empty() == false){
printf("%d ", x + 1);
}
}
}
}
int main()
{
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
citire();
solve();
return 0;
}