记录编号 598566 评测结果 AAAAA
题目名称 最短Hamilton路径 最终得分 100
用户昵称 Gravatar李金泽 是否通过 通过
代码语言 C++ 运行时间 1.862 s
提交时间 2025-01-25 16:49:29 内存使用 81.55 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#define N 20
using namespace std;
int n,m,t[N],e[N][N],f[N][1<<N];
int min(int x,int y){return x<y?x:y;}
int main(){
    freopen("ham.in","r",stdin);freopen("ham.out","w",stdout);
    t[0]=1;for(int i=1;i<N;i++)t[i]=t[i-1]<<1;
    scanf("%d",&n);m=1<<n;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            scanf("%d",e[i]+j);
    memset(f,0x3f,sizeof(f));
    f[0][1]=0;
    for(int s=1;s<m;s++)
        for(int i=0;i<n;i++)
            if(s&t[i])
                for(int j=0;j<n;j++)
                    if(!(s&t[j]))
                        f[j][s|t[j]]=min(f[j][s|t[j]],f[i][s]+e[i][j]);
    printf("%d",f[n-1][m-1]);
    return 0;
}