Description

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

Input

第一行一个正整数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个用空格隔开的整数,表示有宝藏的区域编号。

Output

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

\(n\leq 100\) emm,\(Floyd\)水题.

然后看到宝藏最多会有10个.直接枚举全排列即可.

\(STL\)打法吼啊,\(next_permutation\)枚举全排列即可 qwq.

不要忘记加上从\(1\)到第一个有宝藏位置的地方的距离和从最后一个宝藏到\(n\)的距离

代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cctype>
#define R register
using namespace std;
inline void in(int &x)
{
int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
}
int n,m,dis[108][108],pos[12];
int sum,ans;
int main()
{
in(n);
for(R int i=1;i<=n;i++)
for(R int j=1;j<=n;j++)
if(i!=j)dis[i][j]=214748364;
for(R int i=1;i<=n;i++)
for(R int j=1;j<=n;j++)
in(dis[i][j]);
for(R int k=1;k<=n;k++)
for(R int i=1;i<=n;i++)
for(R int j=1;j<=n;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
in(m);
for(R int i=1;i<=m;i++)
in(pos[i]);
sort(pos+1,pos+m+1);
ans=dis[1][pos[1]]+dis[pos[m]][n];
for(R int i=1;i<m;i++)
ans+=dis[pos[i]][pos[i+1]];
while(next_permutation(pos+1,pos+m+1))
{
sum=dis[1][pos[1]]+dis[pos[m]][n];
for(R int i=1;i<m;i++)
sum+=dis[pos[i]][pos[i+1]];
ans=min(ans,sum);
}
printf("%d",ans);
}

STL+Floyd【p1690】贪婪的Copy的更多相关文章

  1. 洛谷——P1690 贪婪的Copy

    P1690 贪婪的Copy 题目描述 Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地.卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1&l ...

  2. 洛谷—— P1690 贪婪的Copy

    https://www.luogu.org/problem/show?pid=1690 题目描述 Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地 ...

  3. 洛谷P1690 贪婪的Copy 题解

    题目:https://www.luogu.org/problemnew/show/P1690 分析: 这道题就是一道最短路的题目,因为看到数据范围: n≤100n\leq100n≤100 所以考虑使用 ...

  4. Luogu P1690 贪婪的Copy

    题目描述 Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地.卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1<=Pi<=N)区域 ...

  5. 洛谷 P1690 贪婪的Copy

    题目 本题难度较低,操作比较简单,首先对于范围较小的N(<=100),我们可以先跑一遍floyd,求出任意两点之间的最短路.对于很小的p(<=15),我们可以直接考虑全排列,运用到next ...

  6. blog 题解目录

    洛谷: 1.P2430 严酷的训练 2.CF784E Twisted Circuit 3.P1886 滑动窗口 4.P1090 合并果子 5.P1119 灾后重建 6.P1690 贪婪的Copy 7. ...

  7. poj 3613 经过k条边最短路 floyd+矩阵快速幂

    http://poj.org/problem?id=3613 s->t上经过k条边的最短路 先把1000范围的点离散化到200中,然后使用最短路可以使用floyd,由于求的是经过k条路的最短路, ...

  8. poj 3613 floyd + 快速幂

    题意:本题的大意就是问从S 到 T 经过边得个数恰为k的最短路是多少. 思路:对于邻接矩阵每一次floyd求的是每个点间的最短距离,则n次floyd就是每个点间n条路的最短距离(可以重复边); 但是由 ...

  9. C++ STL 常用拷贝和替换算法

    C++ STL 常用拷贝和替换算法 copy() 复制 vector<int> vecIntA; vecIntA.push_back(1); vecIntA.push_back(3); v ...

随机推荐

  1. javascript 数组的常用方法总结

    前言 主要讨论一下数组的方法,     1.splice和slice的区别     2.pop和push     3.shift和unshift     4.join     5.forEach(es ...

  2. diskimage-builder-command

    yum -y install python-virtualenv.noarch virtualenv ~/dib-virtualenv . ~/dib-virtualenv/bin/activate ...

  3. hashcode和equals方法小记

    在正确的逻辑下,两个对象的hashcode一样,不代表两个对象equals:两个对象equals,则hashcode一定一样 在HashSet集合中,是不允许有重复的元素的,那么,set怎么才知道元素 ...

  4. 华东交通大学2017年ACM双基程序设计大赛题解

    简单题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submissio ...

  5. POJ A-Wireless Network

    http://poj.org/problem?id=2236 An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated ...

  6. Hexo NexT主题添加点击爱心效果

    给NexT主题内添加页面点击出现爱心的效果 创建js文件 在/themes/next/source/js/src下新建文件clicklove.js,接着把该链接下的代码拷贝粘贴到clicklove.j ...

  7. Android Studio使用过程中常见问题及解决方案

    熟悉Android的童鞋应该对Android Studio都不陌生.Android编程有两个常用的开发环境,分别是Android Studio和Eclipse,之前使用比较多的是Eclipse,而现在 ...

  8. Educational Codeforces Round 42 (Rated for Div. 2) C

    C. Make a Square time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  9. Topcoder SRM 604 div1题解

    CTSC考完跑了过来日常TC--- Easy(250pts): 题目大意:有个机器人,一开始的位置在(0,0),第k个回合可以向四个方向移动3^k的距离(不能不动),问是否可以到达(x,y),数据满足 ...

  10. datatable to list 方法转换

    #region 实体转换 /// <summary> /// add extension method for datable /// </summary> /// <p ...