DIjkstra
123
小鱼朵~
计算机小废宅
展开
-
1003 Emergency (25 分)
1003 Emergency (25 分)题目大意n个城市m条路,每个城市有救援小组,所有的边的边权已知。给定起点和终点,求从起点到终点的最短路径条数以及最短路径上的救援小组数目之和。如果有多条就输出点权(城市救援小组数目)最大的那个基本思路因为这里不需要我们输出具体的最短路径,所以直接用Dij算法解决即可,参考算法笔记的模板即可解决。代码具体数据结构和详细代码的设计请看注释:#include <cstdio>#include <iostream>#include原创 2021-09-11 21:15:10 · 128 阅读 · 0 评论 -
1018 Public Bike Management (30 分)
1018 Public Bike Management (30 分)题目大意每个自行车车站的最大容量为一个偶数cmax,如果一个车站里面自行车的数量恰好为cmax / 2,那么称处于完美状态。如果一个车站容量是满的或者空的,控制中心(处于结点0处)就会携带或者从路上收集一定数量的自行车前往该车站,一路上会让所有的车站沿途都达到完美。现在给出cmax,车站的数量n,问题车站sp,m条边,还有距离,求最短路径。如果最短路径有多个,求能带的最少的自行车数目的那条。如果还是有很多条不同的路,那么就找一个从车站带原创 2021-08-22 17:26:18 · 144 阅读 · 0 评论 -
1030 Travel Plan(30 分)
1030 Travel Plan(30 分)题目大意求起点到终点的最短路径最短距离和花费,要求首先路径最短,其次花费最少,要输出完整路径基本思路最直接的一道Dij+dfs题目,直接套用算法笔记给出的模板即可解决代码#include <cstdio>#include <iostream>#include <algorithm>#include <vector>using namespace std;const int MAXN=510;c原创 2021-09-11 20:51:10 · 145 阅读 · 0 评论 -
1072 Gas Station (30 分)
1072 Gas Station (30 分)题目大意从m个站点中选取一个站点,让他离居民区的最近的人最远,并且没有超出服务范围。如果有很多个最远的加油站,输出距离所有居民区平均距离最小的那一个。如果平均值还是一样。输出加油站编号最小的那一个。基本思路这题是我做过pta上面最最最难的一道Dij题目,让我想起了高中哪会被最大值里的最小值,最小值里的最大值这类问题支配的恐惧~因为k组边中会有重复的和两个顶点相同的情况(说明两个顶点间有多条路,应该选择最小的那条路径)(自身到自身,无效数据,应该舍弃掉)原创 2021-08-23 14:07:26 · 86 阅读 · 0 评论 -
1087 All Roads Lead to Rome (30 分)
1087 All Roads Lead to Rome (30 分)题目大意有N个城市,M条无向边,从某个给定的起始城市出发,前往名为ROM的城市。每个城市(除了起始城市)都有一个点权(称为幸福值),和边权(每条边所需的花费)。求从起点到ROM所需要的最少花费,并输出其路径。如果路径有多条,给出幸福值最大的那条。如果仍然不唯一,选择路径上的城市平均幸福值最大的那条路径核心思路按照晴神算法笔记的模板,进行一次Dj+dfs即可求出。不过需要注意的是,这里的顶点不是直接给出数字,而是给出三个大写字母组成原创 2021-08-20 16:05:06 · 148 阅读 · 0 评论 -
1111 Online Map (30 分)
1111 Online Map (30 分)题目大意输入我们的当前位置和目的地,在线地图可以推荐多条路径。现在,您的工作是向用户推荐两条路径:一条是最短的,另一条是最快的。可以保证任何请求都存在路径。核心思路可以套用晴神算法笔记上总结的模板,进行两个Dijkstra+DFS即可:第一次Dijkstra以距离为第一标尺求出所有最短路径,DFS以时间为第二标尺在找出的所有距离最短路径中找一条时间最短的。第二次Dijkstra以时间为第一标尺求出所有最短路径,DFS以距离为第二标尺在找出的所有时间最原创 2021-08-20 08:15:01 · 124 阅读 · 0 评论