Cod sursa(job #2454153)

Utilizator red_devil99Mancunian Red red_devil99 Data 7 septembrie 2019 15:46:19
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<pair<int,int>> v[500001];
int n, m;
int valid[500001];

void dfs(int nod){
	while(v[nod].size()){
         int pozitie = v[nod].back().first;
         int vecin = v[nod].back().second;
         v[nod].pop_back();
         if(!valid[vecin]){
         	valid[vecin] = 1;
         	dfs(pozitie);
         }
	}
	if(m){
		fout << nod <<" ";
		m--;
	}
}

int main(){
	fin >> n >> m;
	for(int i = 1; i <= m; i++){
		int x, y;
		fin >> x >> y;
		v[x].push_back(make_pair(y, i));
		v[y].push_back(make_pair(x, i));
	}
	for(int i = 1; i <= n; i++){
		if(v[i].size()%2){
			fout << "-1";
			return 0;
		}
	}
	dfs(1);
	return 0;
}