首先求出各点之间的最短路,floyed即可,注意是0~n。

然后考虑状压,f[i][j]表示状态为i时访问j点时的最短路和,1表示访问,0表示未访问,然后第j个点所在的位置就是(1<<j)有0存在,例如状态1010,从右至左,点1.3被访问,所以我们要处理第1各点就是(1<<1)。

f[i][j]=min(f[i][j],f[i-(1<<j)][p]+dis[p][j]);

p表示枚举每个点,i-(1<<j)状态回到访问j之前,很详细了。

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,ans;
int dp[(<<)][],dis[][];
int main()
{
scanf("%d",&n);
ans=0x7fffffff;
memset(dp,,sizeof(dp));
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
scanf("%d",&dis[i][j]);
for (int k=;k<=n;k++)
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
dp[][]=;
for (int i=;i<(<<(n+));i++)
for (int now=;now<=n;now++)
for (int last=;last<=n;last++)
if (i&(<<now))
dp[i][now]=min(dp[i][now],dp[i-(<<now)][last]+dis[last][now]);
for (int i=;i<=n;i++)
ans=min(ans,dp[(<<(n+))-][i]+dis[i][]);
printf("%d\n",ans);
return ;
}

题目描述 Description

有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户的手上。n个不同的客户分别在1~n个编号的城市中。送外卖的从0号城市出发,然后n个城市都要走一次(一个城市可以走多次),最后还要回到0点(他的单位),请问最短时间是多少。现在已知任意两个城市的直接通路的时间。

输入描述 Input Description

第一行一个正整数n (1<=n<=15)

接下来是一个(n+1)*(n+1)的矩阵,矩阵中的数均为不超过10000的正整数。矩阵的i行j列表示第i-1号城市和j-1号城市之间直接通路的时间。当然城市a到城市b的直接通路时间和城市b到城市a的直接通路时间不一定相同,也就是说道路都是单向的。

输出描述 Output Description

一个正整数表示最少花费的时间

样例输入 Sample Input
3
0 1 10 10
1 0 1 2
10 1 0 10
10 2 10 0
样例输出 Sample Output

8

数据范围及提示 Data Size & Hint

1<=n<=15

最新文章

  1. STL模板中的map的使用与例题
  2. 【学习笔记】Y2-1-1 Oracle数据库基础
  3. traceroute
  4. 根据ip判断地区,IP接口
  5. 【液晶模块系列基础视频】3.3fatfs接口函数的使用3
  6. JavaScript的事件对象_键盘事件
  7. proBuilder编辑的模型变黑
  8. ASP.NET验证控件详解
  9. Oracle修改字段类型和长度
  10. 201521123069 《Java程序设计》 第5周学习总结
  11. python 可迭代对象 迭代器 生成器总结
  12. MT【259】2016天津压轴题之最佳逼近
  13. nlp底层技术列举
  14. [maven] &quot;Dynamic Web Module 3.0 requires Java 1.6 or newer.&quot; OR &quot;JAX-RS (REST Web Services) 2.0 requires Java 1.6 or newer.&quot;
  15. idea2017启动ssm项目卡在build阶段后报outofmemory
  16. CF1137C Museums Tour
  17. =&gt; js 中箭头函数使用总结
  18. FastDFS安装教程
  19. poj1742(多重背包分解+01背包二进制优化)
  20. golang语言中os包的学习与使用(文件,目录,进程的操作)

热门文章

  1. 如何扩大LVM 逻辑分区的大小?
  2. sqlpuls基本命令
  3. print、sp_helptext的限制与扩展
  4. util类中非静态方法中注入serivce,在controller层是使用util。
  5. 第2月第6天 iOS 运行时添加属性和方法
  6. 自写网站入门阶段之三:兼容大战与jq初探
  7. mount img
  8. 安卓APP关于切图标
  9. webstrom配置sass与less
  10. Linux Swap分区设定