Solution:

这道题的意思是给定起点和终点,求最短路。但还有一个要求,就是每个城市有救援队,我们要在求得最短路的情况下集结沿途尽可能多的救援队人数。
这道题的n值较小,直接dijkstra即可。

代码如下:

#include<iostream>
#define INF 0x3f3f3f3f
using namespace std;int visit[505],dis[505],mp[505][505];
int num[505];//记录最短路的条数
int p[505];//记录每个城市的救援队人数
int value[505];//记录到这个点为止可以获得的最大救援人数
int n,m;//n为城市个数,m为路径条数void dijkstra(int s){for(int i=0;i<505;i++){visit[i]=0;num[i]=0;dis[i]=INF;value[i]=0;}dis[s]=0;num[s]=1;value[s]=p[s];for(int i=0;i<n;i++){int u=-1,min1=INF;for(int j=0;j<n;j++){if(dis[j]<min1&&visit[j]==0){min1=dis[j];u=j;}}if(u==-1){return;}visit[u]=1;for(int v=0;v<n;v++){if(visit[v]==0&&mp[u][v]!=INF){if(dis[v]>dis[u]+mp[u][v]){dis[v]=dis[u]+mp[u][v];num[v]=num[u];value[v]=value[u]+p[v];}else if(dis[v]==dis[u]+mp[u][v]){num[v]=num[v]+num[u];if(value[v]<value[u]+p[v]){value[v]=value[u]+p[v];}}}}}
}int main(){int start,end1;cin>>n>>m>>start>>end1;//读入结点数、边数、起点、终点for(int i=0;i<505;i++){//初始化for(int j=0;j<505;j++){mp[i][j]=INF;}}for(int i=0;i<n;i++){cin>>p[i];}int a,b,len;for(int i=0;i<m;i++){cin>>a>>b>>len;mp[a][b]=mp[b][a]=len;}dijkstra(start);cout<<num[end1]<<' '<<value[end1];return 0;
}

PAT甲级 1003 Emergency 单源Dijkstra最短路相关推荐

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

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

  2. PAT甲级 1003 Emergency

    PAT甲级 1003 Emergency As an emergency rescue team leader of a city, you are given a special map of yo ...

  3. PAT甲级1003 Emergency Dijkstra算法(堆优化版/朴素版)

    前言   最近花了很多的时间在写JAVA项目上面,疏忽了算法和数据结构的学习.最近突然醒悟基础更为重要,打算从今天开始每天抽出一些时间做下PAT甲级的题目.现有题库的前两题很简单,从第三题开始吧. 题 ...

  4. PAT(甲级) 1003. Emergency

    1003 . Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emer ...

  5. PAT 甲级1003 Emergency 题解

    在PAT1003 Emergency 这道题上上卡了很久,多次修改考虑漏掉的Case后,成功解决问题. 题目描述 每个输入文件包含一个测试用例. 对于每个测试用例,第一行包含4个正整数:N(≤500) ...

  6. (迪杰斯特拉)Dijkstra算法详解 PAT甲级 1003

    1.迪杰斯特拉(Dijkstra)算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最 短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想) ...

  7. 最短路径(单源 dijkstra算法-邻接矩阵)

    //单源最短路径,dijkstra算法,邻接矩阵形式,复杂度O(n^2) //求出源s到所有点的最短路径,参数,传入图的顶点数n,(有向图)邻接矩阵mat //参数,返回到各点的最短距离min[]和路 ...

  8. 【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 ...

  9. PAT甲级 1003 Dijkstra的口诀干货

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

最新文章

  1. python 时间sleep() 的方法
  2. java bank项目答案_Java基础实战Bank项目01-04
  3. matlab仿真谱间干扰,内外分解和谱分解问题解析计算及其MATLAB仿真.pdf
  4. ajax post对象参数,ajax用post方法传递参数
  5. 为何Java中子类重写方法的访问权限不能低于父类中权限
  6. python 字符编码判断 chardet评测
  7. 学习笔记(19):Python网络编程并发编程-互斥锁
  8. 偷梁换柱做自己的封装系统
  9. 3-1 Apache Shiro权限管理框架介绍
  10. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件
  11. Amazon亲儿子MXNet与其他框架有哪些不同?| 赠书
  12. CSS3 filter属性学习
  13. svn 迁移到git下全过程
  14. 电子书的下载与查阅书的源码
  15. php改写单词的大小写strtoupper/strtolower/ucfirst/ucwords
  16. 米3换完屏信号无服务器,米3更新系统找不到云服务器
  17. P4556 [Vani有约会]雨天的尾巴(树上的差分+线段树的启发式合并)
  18. db2归档日志与循环日志(转载weiruan85)
  19. 伸缩的菜单html,javascript伸缩菜单栏实现代码分享
  20. python对钉钉考勤旷工的数据填入excel

热门文章

  1. 现代汽车减持格灵深瞳:至少套现3402万 仍持股近5%
  2. kolla ansible各组件作用
  3. imx6 android 最新,IMX6开发板创建第一个Android应用程序helloworld
  4. 张建伟老师管理制度:PS5 Slim版本即将推出
  5. 如果你还不懂会员管理系统,那还做什么实体零售
  6. 【Unity3D】顶点和片元着色器
  7. Echarts实战GEO3D和bar3D延迟显示动画发光柱图的练习(未成功)
  8. python ipaddress模块_Python学习笔记-IP地址处理模块Ipy
  9. AWVS如何收集敏感信息
  10. 澳洲大药房天猫618战绩:爆款面霜销量够一个妹子用13个世纪