Cod sursa(job #423790)

Utilizator marian77ivan marian liviu marian77 Data 24 martie 2010 12:07:39
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
FILE *f=fopen("dusman.in","r");
FILE *g=fopen("dusman.out","w");
int n,m,k,viz[10001],a[1001][1001],i,a1,b,x[10001];
int cont(int k) {
	if(k>1&&a[x[k]][x[k-1]]==1)
		return 0;
	return 1;
}
void tipar(int k) {
	int i;
	for(i=1;i<=k;i++)
		fprintf(g,"%d ",x[i]);
}
void back() {
	int k;
	k=1;
	x[k]=0;
	while(k>0)
		if(x[k]<n) {
			x[k]++;
			if(viz[x[k]]==0)
				if(cont(k)) {
					viz[x[k]]=1;
					if(k==n) {
						m--;
						if(m==0)
							tipar(k);
						viz[x[k]]=0;
					}
					else {
						k++;
						x[k]=0;
					}
				}
		}
		else {
			k--;
			viz[x[k]]=0;
		}
}
int main() {
	
	fscanf(f,"%d%d%d",&n,&m,&k);
	for(i=1;i<=k;i++) {
		fscanf(f,"%d%d",&a1,&b);
		a[a1][b]=1;
		a[b][a1]=1;
	}
	back();
	return 0;
}