Pagini recente » Cod sursa (job #1348669) | Istoria paginii runda/aqm/clasament | Cod sursa (job #2587978) | Cod sursa (job #2415624) | Cod sursa (job #411130)
Cod sursa(job #411130)
#include<stdio.h>
int x[1001],n,k,d,as,ev=1,var,ind,car[1001],mat[1001][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;
int st=x[ind];
if(x[ind]<n)
do
{
++x[ind];
if(!car[x[ind]]&&!mat[x[ind-1]][x[ind]])
{as=1;car[x[ind]]=1;car[st]=0;}
}while(x[ind]<n&&!as);
if(!as)x[ind]=st;
}
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]);
//printf("\n");
ind=-1;
}
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();}
else {++ind;x[ind]=0;}
}
else{car[x[ind]]=0;x[ind]=0;--ind;}
}
fclose(g);
return 0;
}