Pagini recente » Cod sursa (job #3361906) | Cod sursa (job #3361256) | Cod sursa (job #3362274) | Cod sursa (job #3362280) | Cod sursa (job #3361995)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#ifdef LOCAL
#define fin cin
#define fout cout
#else
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
#endif
vector<pair<int, int>> adj[100001];
bool vizitat[500001];
int poz[100001];
void euler(int u) {
for (; poz[u]<adj[u].size(); poz[u]++) {
if (vizitat[adj[u][poz[u]].second])
continue;
vizitat[adj[u][poz[u]].second] = true;
euler(adj[u][poz[u]].first);
}
fout << u << ' ';
}
int main() {
int n, m, u, v;
fin >> n >> m;
for (int i=1; i<=m; i++) {
fin >> u >> v;
adj[u].push_back({v, i});
adj[v].push_back({u, i});
}
for (u=1; u<=n; u++)
if (adj[u].size() % 2 == 1) {
fout << -1;
return 0;
}
euler(1);
}