博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PTA 数据结构与算法题目集(中文) 7-35 城市间紧急救援(25 分) 迪杰斯特拉算法
阅读量:3903 次
发布时间:2019-05-23

本文共 1589 字,大约阅读时间需要 5 分钟。

7-35 城市间紧急救援(25 分)

作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。

输入格式:

输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;D是目的地的城市编号。

第二行给出N个正整数,其中第i个数是第i个城市的救援队的数目,数字间以空格分隔。随后的M行中,每行给出一条快速道路的信息,分别是:城市1、城市2、快速道路的长度,中间用空格分开,数字均为整数且不超过500。输入保证救援可行且最优解唯一。

输出格式:

第一行输出最短路径的条数和能够召集的最多的救援队数量。第二行输出从S到D的路径中经过的城市编号。数字间以空格分隔,输出结尾不能有多余空格。

输入样例:

4 5 0 320 30 40 100 1 11 3 20 3 30 2 22 3 2

输出样例:

2 600 1 3

 

#include 
#include
#include
#include
#include
#include
using namespace std;const int maxn=505;const int INF=0x3f3f3f3f;int n,m,s,d;int sp[maxn]; //救援人数int dj[maxn]; //距离起点最短距离int vis[maxn];//是否列入集合int road[maxn];//最短路径条数int path[maxn];//前缀节点int total[maxn];//总救援人数struct city{ int e; int len;};vector
ve[maxn];//初始化void init (){ memset (vis,0,sizeof(vis)); memset (total,0,sizeof(total)); memset (road,0,sizeof(road)); memset (path,-1,sizeof(path)); for (int i=0;i
dj[u]+ve[u][i].len) { dj[v]=dj[u]+ve[u][i].len; path[v]=u; road[v]=road[u]; total[v]=total[u]+sp[v]; } else if(dj[v]==dj[u]+ve[u][i].len) { //这里要写到if语句外面 road[v]+=road[u]; if(total[u]+sp[v]>total[v]) { path[v]=u; total[v]=total[u]+sp[v]; } } } } }}//输出函数void output(){ printf("%d %d\n",road[d],total[d]); int temp=d; stack
ss; while (path[temp]!=-1) { ss.push(temp); temp=path[temp]; } ss.push(s); while (!ss.empty()) { printf("%d%c",ss.top(),ss.size()==1? '\n':' '); ss.pop(); }}int main(){ scanf("%d%d%d%d",&n,&m,&s,&d); for (int i=0;i

 

转载地址:http://xpaen.baihongyu.com/

你可能感兴趣的文章
【福听阅读器】为PDF文档添加书签和子书签
查看>>
【mathtype6.7】word2010公式编号
查看>>
【office 2010】word排版之长英文单词自动换行和英文对齐问题
查看>>
solidworks2011 打开后界面消失
查看>>
【VS2010】C++多线程同步与互斥简单运用
查看>>
宏定义中#跟##作用
查看>>
初次使用VS2010基于C++开发项目碰到的问题及解决方法
查看>>
error C2664: “CreateFileW”: 不能将参数 1 从“char *”转换为“LPCWSTR”
查看>>
调试串口通用程序的几种技巧
查看>>
GUI 编辑框中读写矩阵
查看>>
matlab成段注释
查看>>
matlab数据的导入和导出,以matlab工作区workspace为source和destination
查看>>
获取字节数
查看>>
福听阅读器 背景色设置
查看>>
保护眼睛 电脑设置
查看>>
【云端3.4 Beta】云端无法启动,从服务器返回了一个参照
查看>>
解决chrome下用google搜索图片第二页以后不显示的问题
查看>>
将163邮箱的通讯录导入到outlook2010
查看>>
winRar过期了,总弹出 “购买……”
查看>>
看过的动漫
查看>>