Pagini recente » Cod sursa (job #703252) | Cod sursa (job #3251329) | Cod sursa (job #1139411) | Cod sursa (job #2911239) | Cod sursa (job #2668800)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int main() {
int N, M;
fin >> N >> M;
vector < unordered_multiset < int > > G(N + 1);
for(int i = 0; i < M; ++i) {
int u, v;
fin >> u >> v;
G[u].insert(v);
G[v].insert(u);
}
for(int i = 1; i <= N; ++i)
if(G[i].size() & 1) {
fout << -1;
return 0;
}
vector < int > sol;
stack < int > S;
S.emplace(1);
while(!S.empty()) {
int node = S.top();
if(!G[node].empty()) {
int next = *G[node].begin();
G[node].erase(G[node].begin());
G[next].erase(find(G[next].begin(), G[next].end(), node));
S.emplace(next);
}
else {
S.pop();
sol.emplace_back(node);
}
}
sol.pop_back();
for(int node : sol)
fout << node << ' ';
}