Cod sursa(job #192019)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 30 mai 2008 14:07:53
Problema Lapte Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
long n,m,i,j,poz[100],*vec[100],gr[100], viz[100],a,b,h[100],ultim,ok;
int main()
{	freopen("hamilton.in","rt",stdin); freopen("hamilton.out","wt",stdout);
	//n,m,gr[n],*vec[n],viz[n],h[n]
	scanf("%ld%ld",&n,&m);
	for(i=1;i<=m;i++)
	{	scanf("%ld%ld",&a,&b); gr[a]++; gr[b]++;}
	freopen("hamilton.in","rt",stdin);
	scanf("%ld%ld",&n,&m);
	for(i=1;i<=n;i++){ vec[i]=new long[gr[i]+2];  gr[i]=0;}
	for(i=1;i<=m;i++){ scanf("%ld%ld",&a,&b);
			    vec[a][++gr[a]]=b;
			    vec[b][++gr[b]]=a;
			    }
	for(i=1;i<=n;i++)
	{   h[1]=i; viz[i]=1; ultim=1; poz[1]=1;
	    while(ultim<n&&ultim)
	    {   if(poz[ultim]==gr[h[ultim]]+1)
		  { viz[h[ultim]]=0; ultim--;poz[ultim]++; continue;}
		if(viz[vec[h[ultim]][poz[ultim]]])
		  { poz[ultim]++; continue;}
		h[ultim+1]=vec[h[ultim]][poz[ultim]];
		ultim++; poz[ultim]=1; viz[h[ultim]]=1;
	    }
	    if(ultim==n)
	    {  ok=1; break;}
	}
	for(i=1;i<=n;i++) printf("%ld ",h[i]);
	return 0;
}