Pagini recente » Cod sursa (job #3237150) | Cod sursa (job #2653426) | Cod sursa (job #815134) | Cod sursa (job #1984692) | Cod sursa (job #3268179)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5+2;
using pii = pair<int, int>;
int n,m,g[NMAX];
bool used[NMAX],vis[NMAX];
vector<pii> v[NMAX];
vector<int> cycle;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
void dfs(int nod){
vis[nod] = true;
for(auto [vecin, idx]: v[nod]){
if(used[idx] == false){
used[idx] = true;
dfs(vecin);
}
}
cycle.push_back(nod);
}
int main() {
fin >> n >> m;
for(int i = 1; i <= m; i++){
int x, y;
fin >> x >> y;
g[x]++;
g[y]++;
v[x].push_back({y, i});
v[y].push_back({x, i});
}
bool ok = true;
for(int i = 1; i <= n; i++){
ok &= (g[i]%2 == 0);
}
dfs(1);
for(int i = 1; i <= n; i++){
ok &= vis[i];
}
if(ok){
cycle.pop_back();
for(int it: cycle){
fout << it << " ";
}
}else{
fout << "-1";
}
return 0;
}