pat a1003 Emergency 【dijkstra求最短路径】

PAT甲级 1003 Emergency Dijkstra应用 Dijkstra应用 阅读详情

题目:

https://pintia.cn/problem-sets/994805342720868352/problems/994805523835109376 

一、问题描述

As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities are marked on the map. When there is an emergency call to you from some other city, your job is to lead your men to the place as quickly as possible, and at the mean time, call up as many hands on the way as possible.

Input Specification:

Each input file contains one test case. For each test case, the first line contains 4 positive integers: N (≤500) - the number of cities (and the cities are numbered from 0 to N−1), M - the number of roads, C​1​​ and C​2​​ - the cities that you are currently in and that you must save, respectively. The next line contains N integers, where the i-th integer is the number of rescue teams in the i-th city. Then M lines follow, each describes a road with three integers c​1​​, c​2​​ and L, which are the pair of cities connected by a road and the length of that road, respectively. It is guaranteed that there exists at least one path from C​1​​ to C​2​​.

Output Specification:

For each test case, print in one line two numbers: the number of different shortest paths between C​1​​ and C​2​​, and the maximum amount of rescue teams you can possibly gather. All the numbers in a line must be separated by exactly one space, and there is no extra space allowed at the end of a line.

Sample Input:

5 6 0 2
1 2 1 5 3
0 1 1
0 2 2
0 3 1
1 2 1
2 4 1
3 4 1

Sample Output:

2 4

 给出N个城市,M条无向边。每个城市中都有一定数目的救援小组,所有边的边权已知。现在给出起点和终点,求从起点到终点的最短路径条数及最短路径上的救援小组数目之和。如果有多条最短路径,则输出数目之和最大的。

二、算法实现

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

const int maxv=510;
const int inf=1000000000;

int n,m;  //顶点数,边数 
int st,ed;  //起点,终点
int G[maxv][maxv],weight[maxv];  //邻接矩阵,每个点的权值 

//从起点到u 
int d[maxv];  //最短距离  
int w[maxv];  //最大点权之和
int num[maxv];  //最短路径条数

bool vis[maxv]={false};

void Dijkstra(int s) 
{
	fill(d,d+maxv,inf);
	memset(num,0,sizeof(num));
	memset(w,0,sizeof(w));
	d[s]=0;
	w[s]=weight[s];
	num[s]=1;
	for(int i=0;i<n;i++)
	{
		int u=-1;
		int min=inf;
		for(int j=0;j<n;j++)
		{
			if(vis[j]==false&&d[j]<min)
			{
				u=j;
				min=d[j];
			}
		}
		if(u==-1) return;
		vis[u]=true;
		for(int v=0;v<n;v++)
		{
			if(vis[v]==false&&G[u][v]!=inf)
			{
				if(d[u]+G[u][v]<d[v])
				{
					d[v]=d[u]+G[u][v];
					w[v]=w[u]+weight[v];
					num[v]=num[u];
				}
				else if(d[u]+G[u][v]==d[v])
				{
					if(w[u]+weight[v]>w[v])
					{
						w[v]=w[u]+weight[v];
					}
					num[v]+=num[u];
				}
			}
		}
	}
}
 
int main()
{
	scanf("%d%d%d%d",&n,&m,&st,&ed);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&weight[i]);
	}
		
	fill(G[0],G[0]+maxv*maxv,inf);
	
	int u,v;
	for(int i=0;i<m;i++)
	{
		scanf("%d%d",&u,&v);
		scanf("%d",&G[u][v]);
		G[v][u]=G[u][v]; 
	}
	Dijkstra(st);
	printf("%d %d\n",num[ed],w[ed]);
	return 0; 
}

 

PAT-A1003 Emergency 题目内容及题解 As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the l... 阅读详情

相关推荐

from pointnet2_ops import pointnet2_utils 安装过程

pointnet2_ops

goodgoodstudy___的博客 8363

PAT(甲级) 1003 Emergency

题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805523835109376 代码: #include<iostream> #include<algorithm> #include<vector> #include<string> using name...

curry3030的博客 173

MIC(Maximal Information Coefficient)最大互信息系数

MIC(Maximal Information Coefficient)最大互信息系数是一种用于衡量两个变量之间相关性的统计量。它扩展了传统的互信息(MI)和条件互信息(CMI)的概念,具有更广泛的应用范围。MIC能够捕获包括功能性和非功能性的广泛的关联,具有普遍性和公平性。普遍性意味着在足够的样本量下,MIC能够捕捉到广泛的相关关系,而不仅仅局限于特定的功能类型;公平性则意味着MIC对不同类型的包含同等噪声的关系给出了相似的分数。需要注意的是,虽然MIC具有很多优点,但它也有一些局限性。

qlkaicx的博客 4605

c/c++常用算法(15) -- 经典数据结构(城市之间的最短距离问题)

一、最短总距离算法: 1.描述 我们先来分析一下这个问题。某个地区n个城市构成一个交通图,我们可以使用图结构来描述这个问题,其对应关系如下: 每个城市代表一个图中的一个顶点。两个顶点之间的边就是两个城市之间的路径,边的权值代表了城市间的距离。 这样,求解各个城市之间的最短总距离问题就归结为该图的最小生成树问题。 2.最小生成树 一个有 n 个

小枫的专栏 1万+

基于STM32H750的便携式双通道示波器与信号发生器AFE设计

示波器和信号发生器是电子测量与嵌入式系统调试的基础仪器,其核心在于模拟前端(AFE)对宽动态范围、高精度采样与低失真输出的协同实现。原理上需兼顾输入信号调理(衰减/放大/偏置)、ADC/DAC接口匹配、触发同步及电源完整性设计。技术价值体现在以低成本器件达成±15V输入/±10V输出、16位等效采样精度与85kHz带宽的工程平衡。典型应用场景包括电机驱动波形观测、传感器信号验证、电源环路测试及通信电平分析。本方案聚焦STM32H750平台,深度融合硬件拓扑与片上资源特性,为嵌入式教学与原型开发提供可复现、易

weixin_35755188的博客 110

用pyqtgraph 和pyqt5绘制股票K线图

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'QWidget_plot.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost!...

qq_23114283的博客 5429

[PAT甲级]1003. Emergency (25)(求城市间最短路径和最大救援队数目)

1003. Emergency (25)原题链接As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams

whl_program的博客 497

Upwork数据战争:用爬虫与AI预测垄断订单

当普通自由职业者还在“等客户发需求”时,顶尖玩家已用数据预测客户明天需要什么; 当竞争对手熬夜抢单时,你的爬虫早已自动提交提案—— 这不是科幻,而是2025年的现实! 本文将手把手教你用合法工具搭建“数据战情室”,让每个决策都有万亿级数据支撑!

qq_61813593的博客 983

1003 Emergency (25 分) dijstra 求最短路径条数,和最大点权和

1003Emergency(25分) As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams...

树叶子的博客 481

拆解汽车T-Box:从4G模块到MCU,手把手教你理解车联网的‘黑匣子’

本文深入拆解汽车T-Box,揭示其作为车联网‘黑匣子’的核心架构与工作原理。从4G模块、MCU主控到外设接口,详细解析各组件功能及协同机制,并通过实战案例展示故障诊断与性能优化技巧,帮助读者全面理解T-Box在智能汽车中的关键作用。

weixin_30955617的博客 497

解决此平台不支持虚拟化的 Intel VT-x/EPT故障问题

当我们在VMware Workstation虚拟机上【启用】虚拟系统(如:Windows10)所在的虚【拟机设置】【处理器】【虚拟化引擎】下面的【虚拟化 Intel VT-x/EPT 或AMD-V/RVI(V)】内容后,在启动虚拟系统时,虚拟系统无法启动,且弹出【此平台不支持虚拟化的 Intel VT-x/EPT。不使用虚拟化的 Intel VT-x/EPT,是否继续】窗口

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

10.4 PAT A1003 Emergency (25 分)(最短路径及最大点权——Bellman算法实现)

1003 Emergency (25 分) As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams...

小魚兒 279

Android 12.0 framework系统修改安兔兔等显示的屏幕尺寸大小功能实现

在12.0的系统rom定制化开发中,在使用第三方app检测系统的一些信息中,比如安兔兔 设备信息等检测app中,有时候显示的屏幕尺寸大小和 产品规格书等信息不同,稍微有些差异,所以就需要看下系统framework层中,相关的设备信息是怎么读出来的,然后做些调整 接下来就来分析相关功能

安卓兼职framework和app工程师的博客 478

【随手记_PAT甲级踩坑记】1003 Emergency

PAT甲级 A1003 Emergency 刚开始刷PAT,随手记录一下,写的不好的地方有请指正~ 先上代码~ 代码 #include<iostream> #include<vector> #include<string.h> using namespace std; int main() { int n, m, cur, tar; cin >> n >> m >> cur >> tar; int* teams = n

SpongeBob_wow的博客 691

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

PAT 甲级题目讲解:1003《Emergency》

本文详细讲解 PAT 甲级 1003《Emergency》题目的解法。该题要求在带权无向图中求解从起点到终点的**最短路径数量**,以及所有最短路径中能召集的**最大救援队总数**。文章采用 **Dijkstra 算法** 作为核心框架,扩展维护 `cnt[]`(路径计数)与 `maxr[]`(最大点权和)两个状态数组,并提供链式前向星建图、完整 C++ 代码、常见错误总结与复杂度分析。

qq_35624947的博客 1201

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

PAT A 1003 Emergency

摘要:题目描述了一个城市救援队队长的任务场景,要求从起点城市C1出发,尽快到达目标城市C2,同时尽可能多地召集沿途救援队。输入包含城市数量、道路数量、起点和终点城市编号,各城市的救援队数量,以及各道路的长度。输出要求给出C1到C2的最短路径数量,以及在这些路径中可以召集的最大救援队总数。解题采用Dijkstra算法,用邻接矩阵存储图,并维护最短路径数(dcnt数组)和最大救援队数(teams数组)。样例输入输出展示了算法的正确性。

whdehcy的博客 757

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PAT 1003 Emergency

PAT 1003 Emergency 1. 题意 找出最短路径的条数,并输出某种要求下(此题是救援队伍最多)的路径的特征值。 2.分析 dijkstra算法 3.代码 #include<cstdio> #include<iostream> #define maxn 500 #define INF 100000 using namespace std; int N ,M...

说文科技,做有态度的研究。 597

PTA甲级1003 Emergency dijkstra算法求最短路径

思路:图的最短路径问题,需要求图的最短路径个数以及最大救援数量。

qq_73647271的博客 729

PAT 甲级1003 Emergency 题解

PAT 甲级 1003 Emergency 解题思路

qq_36404766的博客 692

【PAT 1003】 Emergency 图论Dijkstra

1003. Emergency (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emergency rescue team leader of a city, yo

天堂人间 5158

Dijkstra+DFS【解题模板】 + 【PAT】1003 Emergency

本题可以AC PAT 1003 Emergency OJ入口 由于在Dijkstra算法中进行进行求解第二标尺的最优值时经常会由于逻辑复杂而浪费很多时间,所以,一般做题的时候为了思路清晰,逻辑清晰常常将求接最短路径和求解最优第二标尺路径分开进行。 也就是先使用Dijkstra进行求解最短路径生产树。 再DFS所有的最短路径求解出符合题目要求的最优路径。 //迪杰斯特拉算法求出最短路径生成树 void Dijkstra(int start) { fill(dist, dist + MAX, INF); d

目标:NLP算法工程师 254

【PAT】A1003. Emergency(最短路径算法)

【PAT】advanced_1003. Emergency(最短路径算法) @(PAT) 首先利用这道题要复习一下最短路径算法,经典的最短路径算法有两个:Floyd算法和Dijkstra算法。 Floyd算法 关于Floyd算法,基本思路如下: 1. 使用d来存储图,d[i][j]表示从i到j路径的长度,设为无穷大表示路径不存在。使用path存储路径,path[i][j]表示从i到j...

Life in Technicolor 444

最短路径求解(Dijkstra算法)

1. 问题描述(问题来自于PAT A 1003Emergency) As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of ...

二哈 2863

[PAT-Advanced]A1003 Emergency (25)

理解和记忆Dijkstra算法

Duke 293

PAT 1003 Emergency (求最短路径)

PAT 1003 Emergency (求最短路径) 因为本题需要用到Dijkstra算法,所以用邻接矩阵存储会比较好。(主要是一开始用邻接表,结果有几个测试点无法通过还半天找不出原因) **Dijikstra算法思想: ( 计算图中源点S,到所有点的最短路径 ) 准备工作 ① 将图中点点集分为两个集合V和U(代码中用访问标志记录是否被访问) V:已访问过的点的集合,起始为空 U:未访问过的点...

qq_28005573的博客 155

编程题目:PAT(Advanced Level) Practice 1003. Emergency (25)

1003. Emergency (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emergency rescue team leader of a city, yo

杂的文 1238
上一篇: Dijkstra求最短路径
下一篇: Dijkstra+DFS
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值