Cod sursa(job #524187)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 20 ianuarie 2011 16:42:30
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream.h>
ifstream f("dusman.in");
ofstream g("dusman.out");
int m,n,c,x,ok,s[1001],a,b,v[1001];
char d[1001][1001];
void afis()
{
	int i;
	for(i=1;i<=n;i++) g<<s[i]<<' ';
	g<<'\n';
}

int valid(int y)
{
	if(v[s[y]]==1) return 0;
	if(d[s[y]][s[y-1]]=='1') return 0;
	return 1;
}

void back(int k)
{
	int i;
	for(i=1;i<=n&&!ok;i++)
		{s[k]=i;
		if(valid(k)) 
			{v[i]=1;
			if(k==n) 
				{c++; 
				if(c==x) 
					{afis(); 
					ok=1;
					}
				}
				else back(k+1);
			v[i]=0;
			}
		}
}

int main()
{
	int i;
	f>>n>>x>>m;
	for(i=1;i<=m;i++)
		{f>>a>>b;
		d[a][b]=d[b][a]='1';}
	for(i=1;i<=n;i++) d[i][i]='1';
	back(1);
	f.close(); g.close();
	return 0;
}