Cod sursa(job #2575686)

Utilizator ViAlexVisan Alexandru ViAlex Data 6 martie 2020 15:01:29
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include<bits/stdc++.h>
using namespace std;

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

int num_nodes,num_edges;

struct edge{
	int destination,index;
};

vector<edge> graph[100000];
bool used[500000];
vector<int> result;

void read(){
	in>>num_nodes>>num_edges;
	int a,b;
	for(int i=0;i<num_edges;i++){
		in>>a>>b;
		graph[a-1].push_back({b-1,i});
		graph[b-1].push_back({a-1,i});
	}
}


void euler(int node){

	for(int i=0;i<graph[node].size();i++){
		edge p=graph[node][i];
		if(!used[p.index]){
			used[p.index]=true;
			euler(p.destination);
		}
	}
	result.push_back(node);

}


int main(){
	read();
	euler(0);

	if(result[0]==result[result.size()-1])
		for(int i=0;i<result.size();i++)
			out<<result[i]+1<<" ";
	else
	out<<-1;
}