Cod sursa(job #755381)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 5 iunie 2012 16:12:26
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
using namespace std;

int n,m,sol[500100];
bool ap[500100];
int x[500100],y[500100];
vector<int> A[100100];

inline void euler(int nod)
{
	for(vector<int>::iterator it=A[nod].begin();it!=A[nod].end();++it)
	{
		if(!ap[*it])
		{
			ap[*it]=true;
			euler(x[*it]+y[*it]-nod);
		}
	}
	sol[++sol[0]]=nod;
}

int main()
{
	ifstream in("ciclueuler.in");
	ofstream out("ciclueuler.out");
	
	in>>n>>m;
	for(int i=1;i<=m;++i)
	{
		in>>x[i]>>y[i];
		A[x[i]].push_back(i);
		A[y[i]].push_back(i);
	}
	
	for(int i=1;i<=n;++i)
	{
		if(A[i].size()%2)
		{
			out<<"-1\n";
			return 0;
		}
	}
	
	euler(1);
	for(int i=1;i<=sol[0];++i)
	{
		out<<sol[i]<<' ';
	}
	out<<'\n';
	
	out.close();
	return 0;
}