Pagini recente » Cod sursa (job #803482) | Cod sursa (job #1449413) | Cod sursa (job #2922991) | Cod sursa (job #1257333) | Cod sursa (job #553235)
Cod sursa(job #553235)
#include<stdio.h>
FILE*fin,*fout;
int n,i,j,k1,sol[1001],m,viz[1001],a[100][100],x,y;
int verifica() {
int i,ok=1;
for(i=1;i<=n;i++){
if(i!=1&&i!=n){
if(a[sol[i]][sol[i-1]]==1||a[sol[i]][sol[i+1]]==1){return 0;}
}
if(i==1&&a[sol[i]][sol[i+1]]==1){return 0;}
if(i==n&&a[sol[i]][sol[i-1]]==1){return 0;}
}
return 1;
}
void tipar(){
int i;
for(i=1;i<=n;i++){fprintf(fout,"%d ",sol[i]);}
}
void back(int k){
int i;
for(i=1;i<=n;i++){
if(viz[i]==0){
viz[i]=1;
sol[k]=i;
if(k==n){
if(verifica()==1) {j++;}
if(j==k1){tipar();i=n+1;}
}
else{back(k+1);}
viz[i]=0;
}
}
}
int main(){
fin=fopen("dusman.in","r");
fout=fopen("dusman.out","w");
fscanf(fin,"%d %d %d",&n,&k1,&m);
for(i=1;i<=m;i++){ fscanf(fin,"%d %d",&x,&y);a[x][y]=1;a[y][x]=1; }
back(1);
return 0;
}