Pagini recente » Cod sursa (job #14113) | Cod sursa (job #430536) | Cod sursa (job #2109361) | Cod sursa (job #813477) | Cod sursa (job #3167842)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
struct edge {
int x, y, ind;
};
int n, m, x, y, fr[500005];
vector <edge> v[500005];
stack <int> st;
void euler (int x) {
for (auto i:v[x]) {
if (!fr[i.ind]) {
fr[i.ind]=1;
euler(i.y);
}
}
st.push(x);
}
int main() {
fin >> n >> m;
for (int i=1; i<=m; i++) {
fin >> x >> y;
v[x].push_back({x,y,i});
v[y].push_back({x,y,i});
}
bool ok=false;
for (int i=1; i<=n; i++) {
if (v[i].size()%2==1) {
fout << -1;
ok=true;
}
}
if (!ok) {
euler(1);
while (st.size()>1) {
fout << st.top() << " ";
st.pop();
}
}
return 0;
}