Cod sursa(job #981501)

Utilizator stefan.friptuPetru Stefan Friptu stefan.friptu Data 7 august 2013 13:03:31
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>

using namespace std;

long n,m,k,x[1001],a[1001][1001],l,cl,viz[1001],nr,b,c;
 
long cont (long k){
	if(k>1&&a[x[k]][x[k-1]]==1)
		return 0;
    if(k==n&&a[x[k]][x[1]]==1)
        return 0;
    return 1;
}

void tipar(int k){
    for(int i=1;i<=k;i++)
		printf("%ld ",x[i]);
}

void back(int k){
	if(nr==l) 
		return;
    for(int i=1;i<=n;i++){
		if(viz[i]==0){
			x[k]=i;
			viz[i]=1;
			if(cont(k))
				if(k==n){
					nr++;
				if(nr==l){
					tipar(k);
					return;
				}
			}
			else
				back(k+1);
			viz[i]=0;
		}
	}
}
 
int main()
{
	freopen("dusman.in","r",stdin);
	freopen("dusman.out","w",stdout);
	
    scanf("%ld%ld%ld",&n,&l,&m);
	
	for(int i=1;i<=m;i++){
		scanf("%ld%ld",&b,&c);
		a[b][c]=1;
        a[c][b]=1;
   }
	
   back(1);
 
   return 0;
}