https://www.luogu.org/problem/show?pid=1690

题目描述

Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地。卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1<=Pi<=N)区域。Copy还得知了每个区域之间的距离。现在Copy从1号区域出发,要获得所有的宝藏并到n号区域离开。Copy很懒,只好来找你为他寻找一条合适的线路,使得他走过的距离最短。

输入输出格式

输入格式:

第一行一个正整数N(1<=N<=100)

接下来一个N*N的矩阵,第i+1行第j列的数字表示区域i,j之间的距离。每个距离用空格隔开,距离保证i,j<=1000。请注意的i to j距离并不一定等于j to i的距离。

第N+2行一个整数P(0<=P<=10)。

第N+3行共P个用空格隔开的整数,表示有宝藏的区域编号。

输出格式:

一个整数,为Copy获得全部宝藏需要的最短距离。数据保证答案小于等于maxlongint。

输入输出样例

输入样例#1:

样例输入1
2
0 4
5 0
2
1 2 样例输入2
3
0 2 6
1 0 4
7 10 0
1
2
输出样例#1:

样例输出1
4 样例输出1
6

说明

对30%的数据,1<=n<=15,其余如题所述。

对100%的数据,全部数据范围如题所述。

Floyd处理出每个点的之间的距离,全排列更新每次得到宝藏的顺序,依次更新ans

 #include <algorithm>
#include <cstdio> #define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
int n,m,ans,pre,dis[][],p[]; int Presist()
{
scanf("%d",&n);
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]);
scanf("%d",&m); ans=0x7fffffff;
for(int i=; i<=m; ++i) scanf("%d",p+i);
std::sort(p+,p+m+);
do {
int tmp=; pre=;
for(int i=; i<=m; ++i)
{
tmp+=dis[pre][p[i]];
pre=p[i];
}
tmp+=dis[pre][n];
ans=min(ans,tmp);
}while(std::next_permutation(p+,p+m+));
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char*argv[]){;}

最新文章

  1. RDS MySQL 全文检索相关问题的处理
  2. codeiginter框架数据库操作
  3. 读写分离提高 SQL Server 并发性能
  4. php中curl的详细解说(转载)
  5. Backbone.Events—纯净MVC框架的双向绑定基石
  6. mysql 字符串类型数字排序
  7. 新安装ubuntu后几项配置
  8. FineUI添加隐藏标题
  9. BZOJ 1588: Treap 模板
  10. HttpClient 上传多个文件
  11. iframe中的a标签电话链接不能正常打开
  12. PHP 关于判断输入日期是否合法
  13. pymssql包安装方法
  14. mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)
  15. AI 积分图
  16. &quot;放管服&quot;改革 清单
  17. Houdini技术体系 基础管线(三) :UE4以选择区域的方式对地形做生成和更新 上篇
  18. splay专题复习——bzoj 3224 &amp; 1862 &amp; 1503 题解
  19. C/S模型之TCP群聊
  20. php 文件上传,下载

热门文章

  1. Effective Java读书笔记完结啦
  2. CROSS APPLY AND CROSS APPLY
  3. bootstrap基本布局
  4. kubernetesV1.13.1一键部署脚本(k8s自动部署脚本)
  5. Android优化方案之--Fragment的懒加载实现
  6. Map接口框架图
  7. python strip() 函数探究
  8. CREATE SCHEMA - 定义一个新的模式
  9. CAD绘制固定圆形标注(网页版)
  10. ssd训练自己的数据集