L2-001 紧急救援

一、题目

二、解题思路

  1. 迪杰斯特拉算法。
  2. 求最短路径的条数:在更新T时,如果是 dis[j]>dis[index]+map[index][j] ,则 cot[j]=cot[index] ,如果是 dis[j]==dis[index]+map[index][j] ,则 cot[j]+=cot[index] 。
  3. 递归输出最短路径。

三、代码

#include<iostream>
using namespace std;
//无穷大 
#define maxInt 0x3f3f3f3f
//递归输出最短路径 
void printfPath(int end,int pre[])
{if(pre[end]!=-1){printfPath(pre[end],pre);cout<<" "<<end;}else{cout<<end;}
}
int main()
{int n,m,start,end;cin>>n>>m>>start>>end;
//	迪杰斯特拉的四个数组+三个数组 int map[n][n],flag[n],dis[n],pre[n],quan[n],army[n],cot[n];for(int i=0;i<n;i++){flag[i]=0;dis[i]=maxInt;pre[i]=-1;for(int j=0;j<n;j++){map[i][j]=maxInt;}cin>>quan[i];army[i]=0;cot[i]=1;}while(m--){int i,j;cin>>i>>j;cin>>map[i][j];map[j][i]=map[i][j];} 
//	起始节点 flag[start]=1;dis[start]=0;army[start]=quan[start];for(int i=0;i<n;i++){if(flag[i]==0){dis[i]=map[start][i];pre[i]=start;army[i]=quan[start]+quan[i];}}
//	其余节点 for(int i=1;i<n;i++){
//		找最小T int min=maxInt,index;for(int j=0;j<n;j++){if(flag[j]==0 && dis[j]<min){min=dis[j];index=j;}}flag[index]=1;
//		更新T for(int j=0;j<n;j++){if(flag[j]==0 && dis[j]>dis[index]+map[index][j]){dis[j]=dis[index]+map[index][j];pre[j]=index;army[j]=army[index]+quan[j];cot[j]=cot[index]; }else if(flag[j]==0 && dis[j]==dis[index]+map[index][j]){cot[j]+=cot[index];if(army[j]<army[index]+quan[j]) {dis[j]=dis[index]+map[index][j];pre[j]=index;army[j]=army[index]+quan[j];}}}}cout<<cot[end]<<" "<<army[end]<<endl;printfPath(end,pre);return 0;
}

四、总结

        是无向图,在构造图的矩阵时,cin>>map[i][j] ,要加上 map[j][i]=map[i][j] 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/467188.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RestFul的认识

前言 RESTful 是 Representational State Transfer 的缩写&#xff0c;是一种软件架构风格&#xff0c;用于在网络上构建和整合应用程序。它基于 HTTP 协议&#xff0c;并定义了一组约束和规范&#xff0c;用于规范客户端和服务器之间的通信。 RESTful API 是遵循 REST 架构规…

Tied Block Convolution: 具有共享较薄滤波器的更简洁、更出色的CNN

摘要 https://arxiv.org/pdf/2009.12021.pdf 卷积是卷积神经网络&#xff08;CNN&#xff09;的主要构建块。我们观察到&#xff0c;随着通道数的增加&#xff0c;优化后的CNN通常具有高度相关的滤波器&#xff0c;这降低了特征表示的表达力。我们提出了Tied Block Convolutio…

InternLM大模型实战-6.OpenCompass大模型评测

文章目录 前言笔记正文关于模型评测的三个问题为什么需要评测我们需要测什么怎么测试大语言模型 主流大模型评测框架OpenCompass大模型评测领域的挑战 前言 本文是对于InternLM全链路开源体系系列课程的学习笔记。【OpenCompass 大模型评测】 https://www.bilibili.com/video/…

软件测试 - 测试用例设计方法之等价类划分和边界值分析

1. 等价类划分法 1.1 基本理论 等价类划分法是通过科学的方法找到具有共同特性的测试输入的集合&#xff0c;避免进行穷举测试&#xff0c;大大减少了测试用例的数量&#xff0c;从而提高测试效率。等价类划分法的典型应用场景就是输入框&#xff0c;适用于较少数量输入框的场…

LeetCode 0987.二叉树的垂序遍历:遍历时存节点信息,遍历完自定义排序

【LetMeFly】987.二叉树的垂序遍历&#xff1a;遍历时存节点信息&#xff0c;遍历完自定义排序 力扣题目链接&#xff1a;https://leetcode.cn/problems/vertical-order-traversal-of-a-binary-tree/ 给你二叉树的根结点 root &#xff0c;请你设计算法计算二叉树的 垂序遍历…

《Linux 简易速速上手小册》第7章: 网络配置与管理(2024 最新版)

文章目录 7.1 Linux 网络基础7.1.1 重点基础知识7.1.2 重点案例&#xff1a;配置静态 IP 地址7.1.3 拓展案例 1&#xff1a;使用 nmcli 配置网络&#xff08;适用于 Fedora/CentOS&#xff09;7.1.4 拓展案例 2&#xff1a;配置无线网络连接 7.2 静态与动态 IP 配置7.2.1 重点基…

Java学习18-- Override方法重写【★】

重点&#xff1a;super类 & 方法重写 ★看不明白多看几遍&#xff0c;记住static优先级>>高于override 重写Override methods★ 重写Override&#xff1a;child class可以覆盖father class中的method&#xff0c;即子类child class和父类father class有相同名称、…

【Java程序设计】【C00252】基于Springboot的实习管理系统(有论文)

基于Springboot的实习管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的实习管理系统 本系统分为前台功能模块、管理员功能模块、教师功能模块、学生功能模块以及实习单位功能模块。 前台功能模块&#xf…

洛谷: [CSP-J 2023] 小苹果

题目描述 小 Y 的桌子上放着 n n n 个苹果从左到右排成一列&#xff0c;编号为从 1 1 1 到 n n n。 小苞是小 Y 的好朋友&#xff0c;每天她都会从中拿走一些苹果。 每天在拿的时候&#xff0c;小苞都是从左侧第 1 1 1 个苹果开始、每隔 2 2 2 个苹果拿走 1 1 1 个苹果…

MIT-Missing Semester_Topic 3:Editors (Vim) 练习题

文章目录 练习一练习二练习三练习四练习五练习六练习七练习八 本 Topic 的 MIT 讲解网页&#xff08;练习题未给解答&#xff09; 练习一 自行完成 vimtutor。vimtutor 是 Vim 本身附带的一个入门教程&#xff0c;在 shell 中直接输入 vimtutor 便能运行。注意该教程在 8024 大…

剑指offer——旋转数组的最小数字

目录 1. 题目描述2. 分析思路2.1 示例分析 3. 更完美的做法 1. 题目描述 把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;我们称之为数组的旋转。输入一个递增排序的数组的一个旋转&#xff0c;输出旋转数组的最小元素。例如数组{3.4,5,1.2}为{1.2,3,4,5}的一个旋转&a…

idea中vue文件如何快捷打出html标签结构,不写<

例如写一个<button></button>标签&#xff1a;快捷键如下 先写一个button&#xff0c;然后再按tab键即可自动生成一对标签。 演示&#xff1a; 步骤一&#xff1a; 步骤二&#xff1a;