Cod sursa(job #2354911)

Utilizator flibiaVisanu Cristian flibia Data 25 februarie 2019 17:54:51
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");

struct lol {
	int x, y;
};

int n, m, x, y, viz[500100], st[500100], vf;
vector <pair <int, int> > v[100100];
vector <int> sol;
lol E[500100];

int main() {
	in >> n >> m;
	for (int i = 1; i <= m; i++) {
		in >> x >> y;
		v[x].push_back({y, i});
		v[y].push_back({x, i});
		E[i] = {x, y};
	}
	for (int i = 1; i <= n; i++)
		if (v[i].size() % 2)
			return out << -1, 0;
	st[++vf] = 1;
	while (vf > 0) {
		x = st[vf];
		if (v[x].size() == 0) {
			sol.push_back(x);
			vf--;
			continue;
		}
		auto muc = v[x].back();
		v[x].pop_back();
		if (!viz[muc.second]) {
			viz[muc.second] = 1;
			st[++vf] = muc.first;
		} 
	}
	for (auto i : sol)
		out << i << ' ';
	return 0;
}