Cod sursa(job #699895)

Utilizator gabriel93Robu Gabriel gabriel93 Data 29 februarie 2012 21:52:14
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<stdio.h>
#include<cstring>
using namespace std;
int n,m,nr[100002];
char viz[100002];

struct muchie
{
	int x,poz;
	muchie *adresa;
};
muchie *a[100001];

void adaug(int x,int y, int poz)
{
	muchie *p;
	p=new muchie;
	p->x=x;
	p->poz=poz;
	p->adresa=a[y];
	a[y]=p;
}

void citire()
{
	int i,x,y;
	scanf("%d %d",&n,&m);
	memset(a,0,sizeof(a));
	for(i=1;i<=m;i++)
	{
		scanf("%d %d",&x,&y);
		adaug(x,y,i);
		adaug(y,x,i);
		nr[x]++;
		nr[y]++;
	}
	fclose(stdin);
}

void dfs(int x)
{
	muchie *p;
	for(p=a[x];p;p=p->adresa)
		if(viz[p->poz]==0)
		{
			viz[p->poz]=1;
			dfs(p->x);
			printf("%d ",x);
		}
}

int main()
{
	int i;
	freopen("ciclueuler.in","r",stdin);
	freopen("ciclueuler.out","w",stdout);
	citire();
	for(i=1;i<=n;i++)
		if(nr[i]%2==1)
		{
			printf("-1");
			return 0;
		}
	dfs(1);
	fclose(stdout);
	return 0;
}