#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std ;
const int N = 25 , M = 1 << 20 ;
int f[M][N] , a[N][N];
int n ;
int main()
{
cin >> n ;
for(int i = 0; i < n ; i ++)
{
for(int j = 0 ; j < n ; j++)
{
cin >> a[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 - (1<<j)][k] + a[k][j] , f[i][j]) ;
}
}
}
}
}
cout << f[(1 << n) -1][n-1];
return 0 ;
}
acwing 最短hamilton路径 2022/05/11
最新推荐文章于 2025-03-09 17:00:33 发布