Cod sursa(job #755378)

Utilizator roxyroxy2011Luca Roxana roxyroxy2011 Data 5 iunie 2012 16:10:04
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>

using namespace std;

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

vector<int> lis[100001],rez;
int n,m;

void read();
void solve();
void write();

int main()
{
	read();
	solve();
	write();
	f.close();g.close();
	return 0;
}

void read()
{
	f>>n>>m;
	for (int i=1;i<=m;i++)
	{
		int l,c;f>>l>>c;
		lis[l].push_back(c);
		lis[c].push_back(l);
	}
}

void solve()
{
	int p=1;
	while (!lis[p].empty())
	{
		int aux=lis[p][0];lis[p].erase(lis[p].begin());
		vector<int>::iterator it=lis[aux].begin();
		for (;it<lis[aux].end();it++)
			if (lis[aux][*it-1]==p) 
			{
				lis[aux].erase(it);
				break;
			}
		rez.push_back(p);
		p=aux;
	}
	rez.push_back(p);
}

void write()
{
	for (int i=0;i<rez.size();i++)
		g<<rez[i]<<' ';
	g<<'\n';
}