Cod sursa(job #504004)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 26 noiembrie 2010 11:34:41
Problema Ciclu Eulerian Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <set>

using namespace std;

multiset<int> v[100001];
int n,m,i,x1,x2,c[100000],nr;

void euler(int x)
{
	multiset<int>::iterator it,t;
	
	for (it=v[x].begin();it!=v[x].end();)
	{
		t=v[*it].find(x);
		if (t!=v[*it].end()) v[*it].erase(t);
		t=it;
		v[x].erase(v[x].begin());
		euler(*it);
		it=v[x].begin();
	}
	c[nr++]=x;
}

int main()
{
	freopen("ciclueuler.in","r",stdin);
	freopen("ciclueuler.out","w",stdout);
	
	scanf("%d%d",&n,&m);
	for (i=0;i<m;i++)
	{
		scanf("%d%d",&x1,&x2);
		v[x1].insert(x2);
		v[x2].insert(x1);
	}
	
	for (i=1;i<=n;i++)
		if (v[i].size()&1)
		{
			printf("-1\n");
			return 0;
		}
	
	nr=0;
	euler(1);
	
	for (i=1;i<nr;i++) printf("%d ",c[i]);
	
	return 0;
}