比赛 |
二进制状态压缩 |
评测结果 |
AAAAA |
题目名称 |
最短Hamilton路径 |
最终得分 |
100 |
用户昵称 |
┭┮﹏┭┮ |
运行时间 |
4.001 s |
代码语言 |
C++ |
内存使用 |
205.83 MiB |
提交时间 |
2023-07-27 11:26:42 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
long long n,s[(1<<20)+10][25];
long long a[110][110];
double log2(int x){
return log(x)/log(2);
}
int main(){
freopen("ham.in","r",stdin);
freopen("ham.out","w",stdout);
scanf("%lld",&n);
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
scanf("%lld",&a[i][j]);
}
}
memset(s,0x3f,sizeof(s));
s[1][0] = 0;
for(int i = 1;i < (1 << n);i++){
for(int j = 1;j < n;j++){
if((i >> j) & 1){
for(int k = 0;k < n;k++){
if(j != k && (i >> k) & 1){
s[i][j] = min(s[i][j],s[i-(1 << j)][k]+a[j+1][k+1]);
}
}
}
}
}
printf("%lld\n",s[(1<<n)-1][n-1]);
return 0;
}