Pagini recente » Cod sursa (job #487495) | Cod sursa (job #2984591) | Cod sursa (job #817752) | Cod sursa (job #1306019) | Cod sursa (job #502170)
Cod sursa(job #502170)
#include<stdio.h>
FILE *f, *g;
int n,m,p,a[1001][1001],x[1001],viz[1001],ok,nr;
void tipar(int k){
int i;
for(i=1;i<=k;i++){
fprintf(g,"%d ",x[i]);
}
}
int cont(int k){
if(k>1 && a[x[k]][x[k-1]]==1){
return 0;
}
int i;
for(i=1;i<k;i++)
if(x[i]==x[k])
return 0;
return 1;
}
void back(int k){
int i;
if(ok==1){
return;
}
for(i=1;i<=n;i++)
if(viz[i]==0){
x[k]=i;
if(cont(k)==1) {
viz[i]=1;
if(k==n){
nr++;
if(nr==p)
{tipar(k);
ok=1;
return;
}
}
else
back(k+1);
viz[i]=0;
}
}
}
int main(){
int x,y,i;
f=fopen("dusman.in","r");
g=fopen("dusman.out","w");
fscanf(f,"%d %d %d",&n,&p,&m);
for(i=1;i<=m;i++){
fscanf(f,"%d %d",&x,&y);
a[x][y]=a[y][x]=1;
}
back(1);
fclose(f);
fclose(g);
return 0;
}