Pagini recente » Cod sursa (job #2760098) | Cod sursa (job #1130063) | Cod sursa (job #2491251) | Cod sursa (job #1372174) | Cod sursa (job #2668869)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int main() {
int N, M;
fin >> N >> M;
vector < vector < pair < int , int > > > G(N + 1);
vector < bool > viz(M);
for(int i = 0; i < M; ++i) {
int u, v;
fin >> u >> v;
G[u].emplace_back(v, i);
G[v].emplace_back(u, i);
}
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()) {
auto next = G[node].back();
G[node].pop_back();
if(!viz[next.second]) {
viz[next.second] = true;
S.emplace(next.first);
}
}
else {
S.pop();
sol.emplace_back(node);
}
}
sol.pop_back();
for(int node : sol)
fout << node << ' ';
}