Cod sursa(job #3367819)

Utilizator Chris_BlackBlaga Cristian Chris_Black Data 11 octombrie 2026 01:34:29
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>

#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define FORR(i, a, b) for(int i = (a); i >= (b); --i)
#define vi vector<int>
#define vvi vector<vi>
#define pb push_back

using namespace std;
const int N = 5e5 + 9;

ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
#define cin fin
#define cout fout

int n, m;

bool viz[N];
int a[N], b[N];
vvi G(N);
vi ans;

void Dfs(int x) {
	while (!G[x].empty()) {
		auto id = G[x].back();
		G[x].pop_back();

		if (viz[id]) continue;
		viz[id] = true;

		Dfs(a[id] == x ? b[id] : a[id]);
	}

	ans.pb(x);
}

int main() {
	int n, m;

	cin >> n >> m;

	int x, y;
	FOR(i, 1, m) {
		cin >> a[i] >> b[i];
		G[a[i]].pb(i);
		G[b[i]].pb(i);
	}

	FOR(i, 1, n)  {
		if (G[i].size() % 2 == 1) {
			cout << "-1\n";
			return 0;
		}
	}

	Dfs(1);

	ans.pop_back();
	for(auto e : ans)cout << e << " "s;
	cout << "\n"s;

	return 0;
}