Cod sursa(job #752677)

Utilizator cremarencodianaCremarenco Diana cremarencodiana Data 29 mai 2012 10:35:40
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
# include <stdio.h>
# include <vector>
# include <deque>
using namespace std;
deque <int> q;
vector <int> a[100010];
int i,j,x,y,n,m,next,nod;
void DF()
{
	q.push_back(1);
	while (!q.empty())
	{
		nod=q.front();
		if (a[nod].empty())
		{
			printf("%d ",nod);
			q.pop_front();
			continue;
		}
		next=a[nod].back();
		q.push_front(next);
		a[nod].pop_back();
		for (vector  <int> :: iterator it=a[next].begin(); it!=a[next].end(); it++)
			if (*it==nod)
			{
				a[next].erase(it);
				break;
			}
	}
}
int main()
{
	freopen("ciclueuler.in","r",stdin);
	freopen("ciclueuler.out","w",stdout);
	scanf("%d %d\n",&n,&m);
	for (i=1; i<=m; i++)
	{
		scanf("%d %d\n",&x,&y);
		a[x].push_back(y);
		a[y].push_back(x);
	}
	for (i=1; i<=n; i++)
		if (a[i].size()%2==1) 
		{
			printf("-1\n");
			return 0;
		}
	DF();
	printf("\n");
	return 0;
}