Cod sursa(job #1418345)

Utilizator OrolesVultur Oroles Data 12 aprilie 2015 19:57:53
Problema Ciclu Eulerian Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <list>

struct Nod
{
	std::list<int> vecini;
};

Nod nodes[100000];
int ciclu[100000];
int contorCiclu;
int N,M;

void euler( int v )
{
	while( !nodes[v].vecini.empty() )
	{
		int w = nodes[v].vecini.front();
		nodes[v].vecini.pop_front();
		euler( w );
	}
	ciclu[contorCiclu++] = v;
}

int main(int argc, char* argv[])
{
	std::ifstream input("ciclueuler.in");
	std::ofstream output("ciclueuler.out");

	input >> N >> M;
	for ( int i = 0; i < M; ++i )
	{
		int first, second;
		input >> first >> second;
		nodes[first].vecini.push_back( second );
	}

	euler(1);
	for ( int i = contorCiclu-1; i > 0; --i )
	{
		output << ciclu[i] << " ";
	}

	input.close();
	output.close();
	return 0;
}