Pagini recente » Cod sursa (job #899972) | Cod sursa (job #2753252) | Cod sursa (job #867355) | Cod sursa (job #2080535) | Cod sursa (job #411026)
Cod sursa(job #411026)
#include<stdio.h>
int mat[1000][1000],x[1001],n,k,d,as,ev=1,var,ind,car[1001];
FILE*g=fopen("dusman.out","w");
void read()
{
FILE*f=fopen("dusman.in","r");
fscanf(f,"%d%d%d",&n,&k,&d);
int x,y;
for(;d;--d)
{
fscanf(f,"%d%d",&x,&y);
mat[x][y]=mat[y][x]=1;
}
fclose(f);
}
void succesor()
{
as=0;
if(x[ind]<n)
do
{
++x[ind];
if(!mat[x[ind-1]][x[ind]])
as=1;
}while(x[ind]<n&&!as);
}
void eval()
{
int i,j;
ev=1;
for(i=0;i<ind;++i)
for(j=i+1;j<=ind;++j)
if(x[i]==x[j]){ev=0;return;}
}
void tipar()
{
int i;
for(i=0;i<n;++i)
fprintf(g,"%d ",x[i]);
fprintf(g,"\n");
}
int solutie()
{
if(ind==n-1)
{++var;return 1;}
return 0;
}
int main()
{
read();
while(ind>=0)
{
do
{
succesor();
if(as)eval();
}while(!(!as||as&&ev));
if(as)
{
if(solutie())
if(var==k){tipar();ind=-1;}
else{car[x[ind]]=0;x[ind]=0;--ind;}
else {++ind;x[ind]=0;}
}
else{car[x[ind]]=0;x[ind]=0;--ind;}
}
fclose(g);
return 0;
}