Cod sursa(job #3361995)

Utilizator AndreiRaresAcatrini Rares Andrei AndreiRares Data 31 iulie 2026 12:53:09
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

vector<pair<int, int>> adj[100001];
bool vizitat[500001];
int poz[100001];

void euler(int u) {
	for (; poz[u]<adj[u].size(); poz[u]++) {
		if (vizitat[adj[u][poz[u]].second])
			continue;
		vizitat[adj[u][poz[u]].second] = true;
		euler(adj[u][poz[u]].first);
	}
	fout << u << ' ';
}

int main() {
	int n, m, u, v;
	fin >> n >> m;
	for (int i=1; i<=m; i++) {
		fin >> u >> v;
		adj[u].push_back({v, i});
		adj[v].push_back({u, i});
	}
	for (u=1; u<=n; u++)
		if (adj[u].size() % 2 == 1) {
			fout << -1;
			return 0;
		}
	euler(1);
}