Cod sursa(job #2734309)

Utilizator mariamirabella2Bucur-Sabau Maria-Mirabela mariamirabella2 Data 31 martie 2021 18:11:10
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include<vector>
#include<fstream>
#include<map>
using namespace std;

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

struct muchie
{
		int x,y,folosit;
}e[500005];
vector<int>c;
int grad[100005];
vector<pair<int,int>>v[100005];



void euler(int nod){
	for(auto x: v[nod]){
		if(e[x.second].folosit){
			continue;
		}
		e[x.second].folosit=1;
		euler(x.first);
	}
	c.push_back(nod);
}

int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++){
		cin>>e[i].x>>e[i].y;
		v[e[i].x].push_back({e[i].y,i});
		v[e[i].y].push_back({e[i].x,i});
		grad[e[i].x]++;
		grad[e[i].y]++;
		
	}
	for(int i=1;i<=n;i++){
		if(grad[i]%2==1){
			cout<<-1;
			return 0;
		}
	}
	euler(1);
	if(c.size()==m+1){
		c.erase(c.begin()+m);
		for(auto x: c){
			cout<<x<<" ";
		}
	}
	else{
		cout<<-1;
	}
    return 0;
}