Pagini recente » Cod sursa (job #6808) | Cod sursa (job #2784745) | Cod sursa (job #2503067) | Cod sursa (job #1543068) | Cod sursa (job #2979359)
#include <fstream>
#include <queue>
#include <stack>
#include <cstring>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector<pair<int, int> >v[100005];
vector<int>a;
vector<int>::iterator k;
int viz[500001];
int n, m;
int t, b;
int is_ok(int n) {
for (int i = 1; i <= n; i++)
if (v[i].size() % 2 == 1)return 0;
return 1;
}
void Some(int node) {
while (!v[node].empty()) {
auto next_node=v[node].back();
v[node].pop_back();
if (!viz[next_node.second]) {
viz[next_node.second] = 1;
Some(next_node.first);
}
}
a.push_back(node);
}
void solve() {
if (!is_ok(n)) g << -1;
else {
Some(1);
//stergem 1 nodul final
a.pop_back();
for (int i = 0; i < (int)a.size(); i++)
g << a[i] << " ";
g << "\n";
}
}
void read()
{
f >> n >> m;
for (int i = 1; i <= m; i++) {
int t, b;
f >> t >> b;
v[t].push_back({ b, i });
v[b].push_back({ t, i });
}
solve();
}