Cod sursa(job #2696708)

Utilizator WladDalwMvladutu cristian vlad WladDalwM Data 16 ianuarie 2021 13:39:51
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

//#define in cin
//#define out cout

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

vector<int> v[100005];
int a[500005], b[500005];
bool f[500005];
vector<int> rez;

void euler(int pz)
{
	while(v[pz].size())
	{
		int m = v[pz].back();
		v[pz].pop_back();
		if(f[m])
			continue;
		f[m] = 1;
		int vecin = (pz ^ a[m] ^ b[m]);
		euler(vecin);
	}
	rez.push_back(pz);
}
int main()
{
	int n, m;
	in >> n >> m;
	for(int i = 1; i <= m; ++i)
	{
		in >> a[i] >> b[i];
		v[a[i]].push_back(i);
		v[b[i]].push_back(i);
	}
	bool ok = true;
	for(int i = 1; i <= n; ++i)
	{
		if(v[i].size() % 2)
		{
			ok = false;
			break;
		}
	}
	if(ok == false)
	{
		out << "-1";
		return 0;
	}
	euler(1);
	rez.pop_back();
	for(auto &i:rez)
		out << i << " ";
	
	return 0;
}