Cod sursa(job #503665)

Utilizator ZethpixZethpix Zethpix Data 24 noiembrie 2010 11:29:06
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <set>

using namespace std;

multiset<int> copac[100002];

int i,n,N,M,sol[500002],x,y;

void euler(int nod)
{
	int x;
	multiset<int>::iterator it,jt,ht;
	
	it=copac[nod].begin();
	while(it!=copac[nod].end())
	{
		if(it!=copac[nod].end())
		{
			x=*it;
			jt=copac[x].find(nod);
			if(jt!=copac[x].end()) copac[x].erase(jt);
			copac[nod].erase(copac[nod].begin());
			euler(x);
		}
		it=copac[nod].begin();
	}
	sol[++n]=nod;
}

int main()
{
	freopen("euler.in","r",stdin);
	freopen("euler.out","w",stdout);
	
	scanf("%d%d",&N,&M);
	for(i=1;i<=M;i++)
	{
		scanf("%d%d",&x,&y);
		copac[x].insert(y);
		copac[y].insert(x);
	}
	
	n=0;
	euler(1);
	
	for(i=2;i<n;i++)
		printf("%d ",sol[i]);
	printf("%d\n",sol[n]);
	
	return 0;
}