系兄弟就来砍我

时间限制: 1 Sec  内存限制: 128 MB

题目描述

渣渣灰因为一句“大家好,我系渣渣辉,系兄弟就来砍我”引得众粉丝纷纷拿两米长的大刀寻找。

现有n个据点,编号(1~n),有m条单向路使据点相连。每个据点仅有一个人。

这n个人中有k个粉丝。其中渣渣灰在s据点处。请问这k个粉丝到渣渣灰的最短距离是多少

输入

首行输入nmks。(k<=n<=100m<=500)s为渣渣灰所在位置

接下来m行,每行输入x,y,z,表示从x到y的距离是z,由于是单向边,则y到x的距离不一定是z。

接下来k个数字,表示粉丝所在据点。

输出

对于每一个粉丝,输出对应的最短距离。

样例输入

3 3 2 1
1 2 1
2 3 1
3 1 1
2 3

样例输出

2 1

提示

数据保证k个粉丝均能到达渣渣灰的据点

分析:

Dijkstra算法求单源最短路裸题,因为要求k个粉丝(起点)到 S 终点的最短距离,如果正向建边,求k次最短路会超时

所以考虑逆向建边,求S点到所有点的最短距离,储存在dis数组中

既然要求k个点到s点的最短路,我们可以反过来求s到这k个点的最短路。这样就变成了单源最短路问题,dijkstra算法和spfa算法都可以做。由于图为有向图,我们在存图时反向存图即可,原本a[i][j]表示i->j,我们可以将它重新定义为j->i,或者存图时直接写成a[j][i]即可。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 107;
const int inf = 0x3f3f3f3f; //需将road及dis初始化为正无穷inf
int n,m,k,s;
int dis[maxn];  //储存各个点到源点的最短距离,dis[s]为0
int road[maxn][maxn];   //两点之间直接距离关系
bool vis[maxn];     //判断源点到该点的距离是否为最短距离
int fans[maxn];     //粉丝
void dijkstra(int s)
{memset(vis, false, sizeof(vis));//标记是否求出最短路径vis[s] = true;//标记起点到这一点的最小距离已经求出for(int i = 1; i <= n; i++)dis[i] = road[s][i];//初始化起点到每一个点的距离for(int u = 1; u<n; u++){int minD = inf,k = -1;for(int i = 1; i<= n; i++){if(!vis[i]&&dis[i]<minD){k = i;//记录下标minD = dis[i];//记录最小值}}vis[k] = true;//标记已经访问过//松弛操作for(int i = 1; i<= n; i++){if(!vis[i]&&dis[k]+road[k][i]<dis[i]){dis[i]=dis[k]+road[k][i];}//if}//for}
}
int main()
{while(scanf("%d%d%d%d",&n,&m,&k,&s)!=EOF){memset(road,inf,sizeof(road));for(int i=1;i<=m;i++){int a,b,d;scanf("%d%d%d",&a,&b,&d);road[b][a]=min(d,road[b][a]);//逆向建边//起点是fans[i],终点是S}for(int i=1;i<=k;i++)scanf("%d",&fans[i]);dis[s]=0;dijkstra(s);for(int i=1;i<=k;i++){printf("%d",dis[fans[i]]);if(i==k)    printf("\n");else    printf(" ");}}return 0;
}

系兄弟就来砍我 有向图单源最短路相关推荐

  1. 算法提高课-图论-差分约束- AcWing 1169. 糖果:spfa求单源最短路、差分约束

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 差分约束系统 差分约束系统是一种特殊的N元一次不等式组.它包含N个变量X1,...,XnX_1,...,X_nX1​,...,Xn​ ...

  2. SPFA求单源最短路(邻接表)

    SPFA 介绍 SPFA(Shortest Path Faster Algorithm)(队列优化)算法是求单源最短路径的一种算法,在Bellman-ford算法的基础上加上一个队列优化,减少了冗余的 ...

  3. acwing单源最短路的建图模式总结

    .根据边权的范围以及问题求解的需要,最短路问题可以分为以下 4 种情形,分别用不同的算法求解. • 单源最短路径(固定一个顶点为原点,求源点到其他每个顶点 的最短路径) • 1. 边权非负:Dijks ...

  4. CSP认证201609-4 交通规划[C++题解]:最短路径树、dijkstra求单源最短路、递推思想

    题目分析 来源:acwing 分析: 这题是最短路树.保持原图中所有点到根结点的最短距离不变,然后在原图中选择一些边,使所有点连通的最短路是多长. 最短路径树,是一种使用最短路径算法生成的数据结构树. ...

  5. 算法提高课-图论-单源最短路的综合应用-AcWing 1135. 新年好:dijkstra和dfs暴搜结合

    题目分析 来源:acwing 分析: 先预处理出从1,a,b,c,d,e出发到其他所有点的单源最短路.存在二维数组dist[6][N]中 dfs暴搜所有拜访顺序,共有5!种,对于每一种拜访顺序,可以通 ...

  6. 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图

    题目分析 来源:acwing 分析: 本题难在抽象建图上,这里采用的建图方式是:同一条公交线路上,前面的站点都可以连一条有向边到其后面的站点,且边权都为1. 由于边权都是1,可以用bfs来求最短路. ...

  7. PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...

  8. 单源最短路 Dijkstra算法 和 SPFA算法

    单源最短路 •从一个点出发,到达其他顶点的最短路径的长度. •基本操作:松弛 •d[u]+map[u, v]< d[v]这样的边(u,v)称为紧的(tense),可以对它进行松弛(relax): ...

  9. 模板:Prime最小生成树堆优化 + Dijkstra单源最短路堆优化

    Dijkstra 单源最短路堆优化 #include<bits/stdc++.h> using namespace std; typedef pair<int, int> PI ...

最新文章

  1. 区块链 简单实现介绍
  2. boost::container模块实现全部分配的测试程序
  3. 数学--数论--数论定理--欧拉定理
  4. 谷歌浏览器的下载位置如何设置 Chrome浏览器下载路径设置方法简述
  5. Intellij插件之JRebel
  6. lisp 多边形象限_AutoLISP图程序设计.ppt
  7. 经典面试题:断网排查思路
  8. mac 源码编译yar遇见的坑
  9. ceph关闭同步之后的故障记录
  10. OSG仿真案例(3)——cmake创建工程
  11. 【数据结构】树状数组效果讲解
  12. ACL理论及简单配置
  13. Visual Basic Script 程序参考手册-学习第1天:初步认识VBS,编写第一个Hello World程序,解决中文字符乱码问题,推荐参考书
  14. java基础之静态代理和动态代理
  15. windows启动时自动运行程序四种方法(登录或不登录都可以的)
  16. PowerShell报错:无法加载文件C:\Users\server\Documents\windowsPowerShell\profile.ps1...
  17. html语音对话,纯CSS对话框/对话气泡/语音泡沫/speech bubbles【27个示例】
  18. 华为影像XMAGE:求尽世间像,终见菩提心
  19. 导热系数仪 德国PSL 德国培赛乐 快速阻垢性能测试仪 抗车辙剂 摇摆槽 水合物摇摆槽 水合物相变的固-液-气多相流动 水合物阻聚剂分析 沥青硫化氢分析 沥青絮凝点 沥青絮凝点测定仪 油田注水阻垢剂
  20. Web性能压力测试工具-Webbench

热门文章

  1. 反素数(luogu 1463)
  2. PHPStorm IDE 快捷键
  3. SpringMVC Restful api接口实现
  4. js处理时间的那些事
  5. 你所不知到的C++ 系列
  6. Grove——.NET中的ORM实现
  7. esjava 同步mysql_Elasticsearch和mysql数据同步(elasticsearch-jdbc)
  8. WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
  9. MySQL超详细安装.zip【.zip和.msi安装包的区别及详细安装】和可视化软件SQLyog安装教程
  10. linux键盘输入重复,关于修改键盘输入