Pagini recente » Cod sursa (job #787025) | Cod sursa (job #769894) | Cod sursa (job #490503) | Cod sursa (job #17872) | Cod sursa (job #115412)
Cod sursa(job #115412)
#include<stdio.h>
#include<values.h>
int a[1001][1001],sol[1001];
int main()
{
int n,k,m,i,j,aa,b,num=0,ok,aux,l,min,h,poz,dr,st;
freopen("dusman.in","r",stdin);
freopen("dusman.out","w",stdout);
scanf("%d%d%d",&n,&k,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&aa,&b);
a[aa][b]=1;
a[b][aa]=1;
}
ok=1;
for(i=1;i<n;i++)
{ sol[i]=i;
if (a[i][i+1]==1)
ok=0; }
sol[n]=n;
if (ok)
num++;
if (k==num)
{for (i=1;i<=n;i++)
printf("%d ",i);
return 0;}
while(1)
{ i=n-1;
do{
if(sol[i]<sol[i+1])
{
min=MAXINT;
for(h=i+1;h<=n;h++)
if(min>sol[h] && sol[h]>sol[i])
{
min=sol[h];
poz=h;
}
aux=sol[i];
sol[i]=min;
sol[poz]=aux;
dr=n;
st=i+1;
while(st<dr)
{
aux=sol[dr];
sol[dr]=sol[st];
sol[st]=aux;
st++;dr--;
}
ok=0;
i=n-1;
for(l=1;l<n && !ok;l++)
if(a[sol[l]][sol[l+1]]==1)
ok=1;
if(ok==0)
{
num++;
if(num==k)
{
for(l=1;l<=n;l++)
printf("%d ",sol[l]);
fcloseall();
return 0;
}
}
}
else
i--;
}while(i>=1);
}
}