Cod sursa(job #534163)

Utilizator ivan_marianIvan Liviu Marian ivan_marian Data 15 februarie 2011 13:05:13
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 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];
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,nr;
	for(i=1;i<=n;i++)
		if(viz[i]==0)
		{ viz[i]=1;
			b[z]=i;
			if(cont(k))
				if(z==n) {
					nr++;
					if(k==nr) {
					tipar();
						return;
					}
				}
				
				else
					back(z+1);
		viz[i]=0;
		b[z]=0;
		if(k==nr)		
			return;
		}

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