比赛 二进制状态压缩 评测结果 AAAAA
题目名称 最短Hamilton路径 最终得分 100
用户昵称 小金 运行时间 1.462 s
代码语言 C++ 内存使用 85.74 MiB
提交时间 2023-07-27 17:33:18
显示代码纯文本
#include<iostream>
#include<cstring>
using namespace std;
int f[1<<20][20],n,a[20][20];
void dp()
{
    for(int i=1;i<1<<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if((i>>j)&1==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]+a[k][j]);
                    }
                }
            }
        }
    }
}
int main()
{
    freopen("ham.in","r",stdin);
    freopen("ham.out","w",stdout);
    memset(f,0x3f,sizeof(f));
    cin>>n;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cin>>a[i][j];
        }
    }
    f[1][0]=0;
    dp();
    cout<<f[(1<<n)-1][n-1];
    return 0;
}