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