33,010
社区成员
发帖
与我相关
我的任务
分享
int fun(int a[][100],int b[],int n,int m)
{
int i,j,c,ti,t,s;
if(m==2)
s=a[b[0]][b[1]];
else
{
s=020000000000-1;
for (i=1;i<m-1;i++)
{
if(a[b[0]][b[i]]==0)
continue;
ti=a[b[0]][b[i]];
t=b[0];b[0]=b[i];b[i]=b[m-2];b[m-2]=b[m-1];
c=fun(a,b,n,m-1);
b[m-1]=b[m-2];b[m-2]=b[i];b[i]=b[0];b[0]=t;
if(c==0)
continue;
ti+=c;
if(ti<s&&ti!=0)
s=ti;
}
}
if(s!=020000000000-1)
return s;
else
return 0;
}
main()
{ int a[100][100],b[10],c[10][100],i,j,n,r;
while(1)
{
scanf ("%d%d",&n,&r);
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
for (i=0;i<r;i++)
{
scanf("%d",&b[i]);
for (j=0;j<b[i];j++)
{
scanf("%d",&c[i][j]);
c[i][j]--;
}
}
for (i=0;i<r;i++)
{
b[i]=fun(a,c[i],n,b[i]);
printf("%d\n",b[i]);
}
}
}