Cod sursa(job #393336)

Utilizator mihaimoldovanMihai Moldovan mihaimoldovan Data 9 februarie 2010 11:43:03
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream>
using namespace std;
#define nn 100005
struct nod
{
	int info;
	nod *next;
};
nod *g[nn],*t;
int n,m,v[nn],d;
void adauga(int a,int b)
{
	nod *t=new nod;
	t->info=b;
	t->next=g[a];
	g[a]=t;
}
void euler(int i)
{
	while(g[i])
	{
		int k=g[i]->info;
		t=g[i];//sterg un nod
		g[i]=g[i]->next;
		delete t;
		euler(k);
	}
	v[++d]=i;
}
int main()
{
	int a,b,i;
	ifstream fin("ciclueuler.in");
	for(fin>>n>>m,d=m;d;--d)
	{
		fin>>a>>b;
		adauga(a,b);
		adauga(b,a);
	}
	fin.close();
	//rezolvare
	euler(1);
	/*
	i=1;
	for(t=g[i];t;t=t->next)
		while(g[i])
		{
			v[++d]=g[i]->info;//il adaug in stiva
			//euler
			t=g[i];//sterg un nod
			g[i]=g[i]->next;
			delete t;
		}
		*/
	FILE *f=fopen("ciclueuler.out","w");
	if(d==m)
		for(i=1;i<=n;++i)
			fprintf(f,"%d",v[i]);
	else
		fprintf(f,"%d",-1);
	fclose(f);
	return 0;
}