码迷,mamicode.com
首页 > 其他好文 > 详细

最短Hamilton路径 数位dp

时间:2019-10-30 13:25:17      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:ref   数位   blank   bsp   数位dp   acm   ++   ons   memset   

最短Hamilton路径

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 21;
 4 int dp[1<<maxn][maxn];
 5 int maps[maxn][maxn];
 6 int main() {
 7     int n; cin >> n;
 8     for (int i = 0; i < n; i++)
 9         for (int j = 0; j < n; j++)
10             cin >> maps[i][j];
11     memset(dp,0x3f3f3f3f,sizeof(dp));
12     dp[0][0] = 0;
13     for (int i = 0; i < (1<<n); i++) {
14         for (int j = 0; j < n; j++) {
15             if ((i>>j)&1) {
16                 for (int k = 0; k < n; k++) {
17                     if ((i>>k)&1)
18                         dp[i][j] = min(dp[i][j],dp[i^(1<<j)][k]+maps[k][j]);
19                 }
20             }
21         }
22     }
23     printf("%d\n",dp[(1<<n)-1][n-1]);
24     return 0;
25 }

 

最短Hamilton路径 数位dp

标签:ref   数位   blank   bsp   数位dp   acm   ++   ons   memset   

原文地址:https://www.cnblogs.com/wstong/p/11764104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!