Cod sursa(job #308465)

Utilizator za_wolfpalianos cristian za_wolf Data 27 aprilie 2009 10:53:41
Problema Ciclu Eulerian Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#define NMAX 1001
int i,j,n,m,k,l,a,s,b,x[NMAX][NMAX],y[NMAX],z[NMAX];
void euler(int nod)
{
	for (int i=1;i<=n;i++)
		if (x[nod][i]>0)
		{
			x[nod][i]--;
			x[i][nod]--;
			euler(i);
		}
	y[++y[0]]=nod;
}

int main()
{
	freopen("ciclueuler.in","r",stdin);
	freopen("ciclueuler.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (i=1;i<=m;i++)
	{
		scanf("%d%d",&a,&b);
		x[a][b]++;
		x[b][a]++;
		z[a]++;
		z[b]++;
	}
	for (i=1;i<=n;i++)
		if (z[a]%2==1)
		{
			printf("-1\n");
			return 0;
		}
	euler(1);
	for (i=y[0];i>=2;i--)
		printf("%d ",y[i]);
	return 0;
}