Cod sursa(job #755365)

Utilizator geniucosOncescu Costin geniucos Data 5 iunie 2012 15:37:48
Problema Ciclu Eulerian Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
#include<vector>
using namespace std;
int l,x,y,i,n,m,ul,v;
vector < int > h[100002];
vector < int > ::iterator it;
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
	scanf("%d",&x);
	scanf("%d",&y);
	h[x].push_back(y);
	h[y].push_back(x);
}
for(i=1;i<=n;i++)
	if(h[i].size()%2==1)
	{
		printf("-1\n");
		return 0;
	}
l=1;
ul=0;
while(l<=m)
{
	if(l==1)
	{
		ul=1;
		printf("1 ");
	}
	else
	{
		v=h[ul].back();
		printf("%d ",v);
		h[ul].pop_back();
		for(it=h[v].begin();it!=h[v].end();it++)
			if(*it==ul)
			{
				h[v].erase(it);
				break;
			}
		ul=v;
	}
	l++;
}
return 0;
}