TYVJ 1288 飘飘乎居士取能量块
来源:互联网 发布:windows网络发现服务 编辑:程序博客网 时间:2024/06/11 02:41
背景
9月21日,pink生日;9月22日,lina生日;9月23日,轮到到飘飘乎居士(狂欢吧,(^__^) 嘻嘻……)。
描述
9月21日,今天是pink的生日,飘飘乎居士当然要去别人的领土大闹一番啦!
为了收集更多的能量到pink家大闹,飘飘乎居士准备从后花园中取出自己多年积攒的p个能量块。后花园一共被划分n个地区,能量块被分散在里面,现在飘飘乎居士拿出地图,发现自己站在1的地方,而他要做的就是用最短的路程把所有的能量块取出,并且最后走到位于n的出口处,而飘飘乎居士一直是个懒人,他想知道最少要走多少路程才能够取到所有的能量块,并且走到出口
输入格式
第一行一个正整数n,表示花园被划分成了n个地区
接下来一个n*n的矩阵,代表个点之间的相互距离,数据保证从i走到i没有路程
在下来一个整数p,表示一共有p个能量块
接下来一行,表示各个能量块的位置,数据保证1和n没有能量块,且每个地区最多一个能量块
对于所有的数据 0< n<=100 0<=P<=10 任意两点的距离为一个小于1000的正整数
输出格式
一个数,飘飘乎居士所要行走的最小距离
测试样例1
输入
3
0 10 1
3 0 5
1 2 0
1
2
输出
7
备注
花园被分为3个地区,在2号地区有能量块,飘飘乎居士行走的路线如下
1->3->2->1->3
行走的总路程为7,也就是最后的答案。
思路:
(感谢lyd学长的幻灯片)
//By: Sirius_Ren#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int a[105][105],b[105],n,p,minn=0x3fffffff;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d ",&a[i][j]); for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=min(a[i][j],a[i][k]+a[k][j]); scanf("%d",&p); for(int i=1;i<=p;i++)scanf("%d",&b[i]); sort(b+1,b+p+1);b[0]=1;b[p+1]=n; do{ int sum=0; for(int i=1;i<=p+1;i++)sum+=a[b[i-1]][b[i]]; minn=min(minn,sum); }while(next_permutation(b+1,b+p+1)); printf("%d",minn);}
0 0
- [TYVJ 1288] 飘飘乎居士取能量块
- TYVJ 1288 飘飘乎居士取能量块
- Tyvj P1288 飘飘乎居士取能量块
- Tyvj P1288 飘飘乎居士取能量块
- tyvj P1288 飘飘乎居士取能量块
- TYVJ1288 飘飘乎居士取能量块
- TYVJ1288 飘飘乎居士取能量块 -SilverN
- tyvj P1179 飘飘乎居士数列游戏
- Tyvj P1143 飘飘乎居士的约会
- tyvj P1143 飘飘乎居士的约会
- 伊甸园日历游戏 && 飘飘乎居士拯救MM(tyvj 1968 && 1140)
- tyvj P1517 飘飘乎居士的乌龟(最大流)
- TYVJ P1056 能量项链
- tyvj-1052 能量项链
- 飘飘乎居士的约会
- Tyvj 1056 能量项链 dp
- tyvj /noi 2010 能量采集
- P1143 飘飘乎居士的约会
- 利用小鸟云虚拟机搭建web服务尝试
- Lightoj 1002
- C/C++ 单个字符与字符串
- OpenCV用形态学方法进行图像线特征和角点的提取
- UML之关系详解(类图)
- TYVJ 1288 飘飘乎居士取能量块
- EffectiveC++,实现(2)static_cast,dynamic_cast,const_static,reinterpret_cast
- js读取本地图片进行预览,上传服务器
- 8086CPU下使用DS寄存器的注意事项
- 经典算法之归并排序
- iOS沙盒机制
- shape形状资源&图片选择器&广播接受者(发送短信)&图片选择器
- mybatis-generator 代码自动生成工具
- Python 华理 教学周