博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu P1690 贪婪的Copy
阅读量:4954 次
发布时间:2019-06-12

本文共 1199 字,大约阅读时间需要 3 分钟。

题目描述

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:
样例输入120 45 021 2样例输入230 2 61 0 47 10 012
输出样例#1:
样例输出14样例输出16

说明

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

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

1 #include
2 #define Max 150 3 using namespace std; 4 int a,tx[Max][Max],p,n; 5 int main() 6 { 7 scanf("%d",&n); 8 for(int i=1;i<=n;++i) 9 for(int j=1;j<=n;++j)10 scanf("%d",&tx[i][j]);11 for(int i=1;i<=n;++i)12 for(int j=1;j<=n;++j)13 for(int k=1;k<=n;++k)14 tx[j][k]=min(tx[j][k],tx[j][i]+tx[i][k]);15 scanf("%d",&p);16 int ans=0,minn=0x7fffffff,sx[11];17 for(int i=1;i<=p;++i) 18 scanf("%d",&sx[i]);19 sort(sx+1,sx+1+p);20 do21 {22 ans=0;23 ans=tx[1][sx[1]]+tx[sx[p]][n];24 for(int i=1;i

 

转载于:https://www.cnblogs.com/Hammer-cwz-77/p/7384599.html

你可能感兴趣的文章
BZOJ 2120 数颜色 【带修改莫队】
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
Codeforces 40 E. Number Table
查看>>
CLR via C#(第3 版)
查看>>
java语法之final
查看>>
关于响应式布局
查看>>
详解ASP.Net 4中的aspnet_regsql.exe
查看>>
python 多进程和多线程的区别
查看>>
hdu1398
查看>>
[android] 网络断开的监听
查看>>
156.Binary Tree Upside Down
查看>>
MongoDB在windows下安装配置
查看>>
Upselling promotion stored procedure
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
程序员如何提高影响力:手把手教你塑造个人品牌
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
Ext JS学习第十三天 Ext基础之 Ext.Element
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>