AcWing 91. 最短Hamilton路径
原题链接
中等
作者:
Drifter
,
2021-01-11 13:40:25
,
所有人可见
,
阅读 251
寒假打卡
1.11暂时的记号
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=20,M=1<<N;
int n;
int w[N][N];
int f[M][N];
int main(void)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&w[i][j]);
memset(f,0x3f,sizeof f);
f[1][0]=0;
for(int i=0;i<1<<n;i++)
for(int j=0;j<n;j++)
if(i>>j&1)
for(int k=0;k<n;k++)
if((i-(1<<j))>>k&1)
f[i][j]=min(f[i][j],f[i-(1<<j)][k]+w[k][j]);
printf("%d\n",f[(1<<n)-1][n-1]);
return 0;
}