Pagini recente » Cod sursa (job #85347) | Cod sursa (job #170596) | Cod sursa (job #2183726) | Cod sursa (job #838394) | Cod sursa (job #3203832)
#include <bits/stdc++.h>
using namespace std;
string __fname = "ciclueuler"; ifstream in (__fname + ".in"); ofstream out (__fname + ".out");
#define cin in
#define cout out
const int maxn = 1e5 + 2;
const int maxm = 5e5 + 2;
pair <int, int> edge [maxm];
vector <int> v [maxn];
bitset <maxm> used;
void solve(int id){
return;
}
void euler (int u) { // v -> u
while (!v[u].empty()) {
int id = v[u].back();
if (used[id] == true) {
v[u].pop_back();
continue;
}
int v = (edge[id].first == u ? edge[id].second : edge[id].first);
used[id] = 1;
euler(v);
}
cout << u << " ";
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout << fixed; cout << setprecision(10);
int n,m;
cin >> n >> m;
for (int i = 0; i < m; i++){
int x,y;
cin >> x >> y;
edge[i] = {x,y};
v[x].push_back(i);
v[y].push_back(i);
}
for (int i = 1; i <= n; i++){
if (v[i].size() % 2 == 1) {
cout << "-1";
return 0;
}
}
euler(1);
return 0;
}