Cod sursa(job #150162)

Utilizator andr33aradu ioana andr33a Data 6 martie 2008 17:28:31
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream.h>
int a[1003][5],n,m,s,k,l,x[1003],v[1004];
ifstream f("dusman.in");
ofstream g("dusman.out");
void afisare()
{
	for( int i=1;i<=n;i++)
		g<<x[i]<<" ";
	g<<'\n';
}
int corect(int z)
{
	int i,ok=0;
	if(v[x[k]]!=0)
	{
		ok=1;
	}
	if(ok==0)
	{
		for(i=1;i<=a[x[z]][0];i++)
			if(a[x[z]][i]==x[z-1])
				return 0;
		return 1;
	}
	else
		return 0;
}
int main()
{
	int nr=0,i;
	f>>n>>s>>m;
	for(i=1;i<=m;i++)
	{
		f>>k>>l;
		a[k][a[k][0]+1]=l;
		a[k][0]++;
		a[l][a[l][0]+1]=k;
		a[l][0]++;
	}
	k=1;    x[0]=-1;
	x[k]=0;
	while(k>0)
	{
		if(x[k]<n)
		{
			x[k]++;
			if(corect(k)==1)
			{
				if(k==n&&nr<s)
				{
					nr++;
					if(k==n&&nr==s)
					{
						afisare();
						k=0;
					}
				}
				else
				{
					v[x[k]]=1;
					k++;
					x[k]=0;
				}
			}
		}
		else
		{
			k--;
			v[x[k]]=0;
		}
	}
f.close();
g.close();
return 0;
}