Cod sursa(job #534173)

Utilizator ivan_marianIvan Liviu Marian ivan_marian Data 15 februarie 2011 13:35:16
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
FILE *f=fopen("dusman.in","r");
FILE *g=fopen("dusman.out","w");
int n,m,k,a[1001][1001],i,j,x,y,viz[1001],b[1001],nr;
void tipar() {
	int i;
	for(i=1;i<=n;i++)
		fprintf(g,"%d ",b[i]);
}
int cont(int k) {
	if(k>1&&a[b[k]][b[k-1]]==1)
		return 0;
	return 1;
}
void back(int z) {
	int i;
	      if(k==nr)
			return;

	for(i=1;i<=n;i++){
		if(viz[i]==0)
		{ viz[i]=1;
			b[z]=i;
			if(cont(z))
				if(z==n)
				  {
					nr++;
					if(k==nr) {
					tipar();
						return;
					}
				}

				else
					back(z+1);
		viz[i]=0;
		b[z]=0;

		}
	}
}
int main() {
	fscanf(f,"%d%d%d",&n,&k,&m);
	for(i=1;i<=m;i++) {
		fscanf(f,"%d%d",&x,&y);
		a[x][y]=1;
		a[y][x]=1;
	}
	back(1);
	return 0;
}