较为复杂的dijkstra

包含路径打印  最小路的条数  最小路径的情况下取最大权值

v0要是标记就会出错。。。?

有权值的题目  不能设置mp[i][i]为0  否则会无限加权

这题很有参考价值 可以当模板

#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;#define N 505
#define inf 0x3f3f3f3fint path[N];//输出路径   存放的是i的前一个点  path[j]=u;
int n,e,m,s;
int vis[N],dis[N],mp[N][N];
int city[N];//为权值   第一优先级为最短路  第二优先级为权值最或者最小 此为第二类权值(和点相连) 还有一种权值为和路相连 那种更简单
int peo[N];
int pathnum[N];//最短路的条数!!!   初始为1   只要在路径相同时累合即可void dijkstra(int s)
{memset(vis,0,sizeof vis);for(int i=0;i<n;i++)dis[i]=mp[s][i];dis[s]=0;path[s]=-1;peo[s]=city[s];pathnum[s]=1;//明确规定不加vis[s]for(int i=1;i<=n;i++){int minn=inf,u=-1;for(int j=0;j<n;j++)if(!vis[j]&&minn>dis[j])minn=dis[u=j];if(u==-1)return;vis[u]=1;for(int j=0;j<n;j++){if(dis[j]>dis[u]+mp[u][j]){// pathnum[j]=pathnum[u];//最短路条数dis[j]=dis[u]+mp[u][j];path[j]=u;peo[j]=peo[u]+city[j];}else if(dis[j]==dis[u]+mp[u][j]){// pathnum[j]+=pathnum[u];//最短路条数if(peo[j]<peo[u]+city[j]){path[j]=u;peo[j]=peo[u]+city[j];}}}}
}void print(int x)
{if(path[x]==-1){printf("%d",x);return;}print(path[x]);printf(" %d",x);return ;
}int main()
{scanf("%d%d%d%d",&n,&m,&s,&e);for(int i=0;i<n;i++)scanf("%d",&city[i]);for(int i=0;i<n;i++)for(int j=0;j<n;j++)mp[i][j]=inf;//如果加上 i==j 时mp为0  则可以反复刷权值while(m--){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(mp[a][b]>c)mp[a][b]=mp[b][a]=c;}dijkstra(s);printf("%d %d\n", pathnum[e] ,peo[e] );print(e);return 0;
}

转载于:https://www.cnblogs.com/bxd123/p/10369166.html

紧急救援 L2-001 dijkstra 打印路径 最短路条数 权值相关推荐

  1. 【qduoj - 1121】小明的贪心题(Dijkstra最短路 + 最短路条数)

    题干: 小明的贪心题 描述 小明来到青岛上学已经一年了,他给青岛这座城市画了一张地图.在这个地图上有n个点,小明的起始点为1号点,终点为n号点,并且地图上的所有边都是单向的.小明知道从i号点到j号点的 ...

  2. 【PAT - 甲级1003】Emergency (25分)(Dijkstra,最短路条数,双权值最短路)

    题干: As an emergency rescue team leader of a city, you are given a special map of your country. The m ...

  3. 7-4 最短路径之Dijkstra(朴素dijkstra打印路径)

    作者 龚雄兴 单位 湖北文理学院 本题目要求通过读入无向网的边的信息(省略了各顶点的信息,仅用顶点编号来表示),构造图,并利用Dijkstra算法,求出指定源点到其它各点的最短路径. 样例" ...

  4. 【CodeForces - 208C 】Police Station(单源最短路条数,起点终点建图,枚举顶点)

    题干: The Berland road network consists of n cities and of m bidirectional roads. The cities are numbe ...

  5. PAT甲级1087 All Roads Lead to Rome (30分):[C++题解]dijkstra求单源最短路综合、最短路条数、保存路径

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 首先这是一道dijkstra算法求最短路的题目,不过此题较为复杂.首先需要将字符串城市名映射成数字,这里使用hash table 名 ...

  6. PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数

    文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...

  7. 拼题 L2-001 紧急救援 最短路计数+记录路径

    https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 L2-001 紧急救援 (25 分) 作为一 ...

  8. 权值衰减和L2正则化傻傻分不清楚?

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Divyanshu Mishra 编译:ronghuaiyang 导读 权 ...

  9. 权值衰减和 L2 正则化傻傻分不清楚?

    作者 | Divyanshu Mishra 编译 | ronghuaiyang 转自 | AI公园 导读 权值衰减和L2正则化,到底是不是同一个东西,这篇文章给你答案. 神经网络是伟大的函数逼近器和特 ...

  10. 迪杰斯特拉算法及变式(最短距离,打印路径,最短经过节点数)

    问题描述 给定一个图,图的节点名称用(000 ~ N−1N - 1N−1)表示.NNN为图的节点个数,MMM为边的个数,SSS为起始点. 输入条件: 第一行输入 NMSN M SNMS. 其后MMM行 ...

最新文章

  1. 辞去美国终身教职回国的帅教授,拟增列为顶尖985大学博导
  2. 【深度学习】DIY 人脸识别技术的探索(二)
  3. POJ2431贪心(最少加油次数)
  4. 《C++ Primer Plus(第六版)》(17)(第十章 对象和类 编程题答案)
  5. tensorflow padd
  6. Spark(2)——小用RDD
  7. 封装JDBC事务操作,执行存储过程测试
  8. c#遍历一个文件夹下的所有文件包括子文件夹【原】
  9. centos web服务器---sysctl.conf调优参数
  10. Java合并两个有序数组
  11. Java人事管理系统设计
  12. SegmentFault 社区访谈 | Felix:一个如同空气般存在的人
  13. 【华人学者风采】崔斌 北京大学
  14. 联想旗下佳沃集团拟收购智利三文鱼公司Australis Seafoods S.A.
  15. 学习笔记:UDP实现进程心跳检测
  16. Python爬虫学习(四)爬取图片素材网站素材
  17. 英语六级考600分以上是一种怎样的体验?
  18. 向量相似度的计算和向量夹角余旋的关系
  19. 仿微信、QQ聊天页面软键盘遮挡聊天对话的解决办法
  20. Intellij IDEA插件之自动生成时序图(Sequence Diagram)

热门文章

  1. win7 vs2010 安装cocos2d-x
  2. swif开发之--协议的使用
  3. 动态规划------平均切分数组之和为两部分
  4. ORACLE 11g r2   RAC 安装实施规划
  5. C程序设计语言(2)文摘
  6. php 正则断言里面使用*+
  7. 从零开始搭建公司后台技术栈,这套架构绝了...
  8. Mybatis trim 标签的 2 个妙用!
  9. 重磅消息,Redis开源作者宣布不再维护Redis项目!
  10. 难道你不好奇?Thread.sleep(0):线程休眠0秒有什么意义!