蔬菜小程序的开发全流程详解
584
2022-11-17
PAT.A1072 Gas Station
返回目录
题意
有N所居民房、M个加油站待建点以及K条无向边。现在要从M个加油站待建点中选出一个来建造加油站,使得该如油站距离最近的居民房尽可能远,且必须保证所有房子与该加油站的距离都不超过给定的服务范围DS。现在给出N、M、K、DS,以及K条无向边的端点及边权,输出应当选择的加油站编号、与该加油站最近的居民房的距离、该加油站距离所有居民房的平均距离。如果有多个最近距离相同的解,那么选择平均距离最小的:如果平均距离也相同,则选择编号最小的。
样例(可复制)
4 3 11 51 2 21 4 21 G1 41 G2 32 3 22 G2 13 4 23 G3 24 G1 3G2 G1 1G3 G2 2
//outputG12.0 3.3
2 1 2 101 G1 92 G1 20
//output
注意点
本题思路如下:先对每个加油站都进行一次最短路径搜索,每次后都能得到每个加油站到每个房屋的距离,然后进行统计最近的距离,平均距离,最远距离,根据题意找到最优的加油站。本题需要解决编号问题,笔者的做法是对n个房屋的编号为1-n,对m个加油站的编号为n+1-n+m。其中使用了string处理较为方便,stoi()函数为c++11后STL的内置函数,可以将string转换为int。在进行Dijkstra时,需要注意每次都要对dis和vis进行初始化。除此之外还需要注意,循环找最短路径的条件不能写成while(!vis[i]),这是因为要得到所有房屋到加油站的距离。
#include
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~