Cod sursa(job #283726)

Utilizator spidyvenomMarius Toma spidyvenom Data 19 martie 2009 17:17:26
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream.h>
int a,b,m,n,nr,k,j,i,p,z[1001],x[1001],v[1001][4],stop=0;
ifstream f("dusman.in");
ofstream g("dusman.out");
void tipar(int k)
{
int i;
nr++;
if (nr==p) for (i=1;i<=k;i++) {g<<x[i]<<" ";stop=1;}
}
int valid(int k)
{
if (z[x[k]]>1) return 0;
if (k>1) if (v[x[k]][1]==x[k-1]||v[x[k]][2]==x[k-1]||v[x[k]][3]==x[k-1]) return 0;
return 1;
}
int sol(int k)
{
if (k==n) return 1;
else return 0;
}
void back()
{
int k;
k=1;
x[k]=0;
while (k>0)
	 if (x[k]<n)
		  {
		  x[k]++;
		  if (valid(k))
				{
				z[x[k]]=1;
				if (sol(k))
					{
					z[x[k]]--;
					tipar(k);
					if (stop) break;
					}
				else {k++;x[k]=0;}
				}
		  }
	 else {k--;z[x[k]]--;}
}
int main()
{
f>>n>>p>>m;
for (i=1;i<=m;i++)
	{
	f>>a>>b;
	v[a][v[a][0]+1]=b;
	v[b][v[b][0]+1]=a;
	v[a][0]++;
	v[b][0]++;
	}
back();
f.close();
g.close();
return 0;
}