当前位置: 首页 > news >正文

最短路径专题8 交通枢纽 (Floyd求最短路 )

题目:

样例:

输入
4 5 2
0 1 1
0 2 5
0 3 3
1 2 2
2 3 4
0 2
输出
0 7

思路:

        由题意,绘制了该城市的地图之后,由给出的 k 个编号作为起点,求该点到各个点之间的最短距离之和最小的点是哪个,并输出该点,和该点到各个点之间的最短距离之和。

        这又是一个多起点多终点的题型,所以用 Floyd 算法非常的有效率。

代码详解如下:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <unordered_map>
#define endl '\n'
#define x first
#define y second
#define mk make_pair
#define int long long
#define NO puts("NO")
#define YES puts("YES")
#define umap unordered_map
#define INF 0x3f3f3f3f
#define All(x) (x).begin(),(x).end()
#pragma GCC optimize(3,"Ofast","inline")
#define ___G std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 2e6 + 10,M = 500;
using PII = pair<int,int>;int n,m,k;int dist[M][M];	// 定义各个点之间的最短距离数组// 初始化各个点之间的最短距离
inline void Init()
{memset(dist,INF,sizeof dist);// 自身点之间的距离是 0for(int i = 0;i <= n;++i){dist[i][i] = 0;}
}inline void Floyd()
{// 这一层是中间点for(int k = 0;k < n;++k){// 这一层是 i 点for(int i = 0;i < n;++i){// 这一层是 j 点for(int j = 0;j < n;++j){// 更新选取最短的 i 到 j 的最短距离方案 ,即 i 到 k  ,k 再到 jdist[i][j] = min(dist[i][j],dist[i][k] + dist[k][j]);}}}
}// 由 x 点到各个点之间的最短距离之和
inline int DistSum(int x)
{int sum = 0;for(int i = 0;i < n;++i){sum += dist[x][i];}return sum;
}inline void solve()
{	cin >> n >> m >> k;Init();	// 初始化最短路距离数组while(m--){int a,b,c;cin >> a >> b >> c;// 记录两个点之间的最短距离,min 防止自环dist[a][b] = dist[b][a] = min(dist[a][b],c);}// 开始求各个点之间的最短距离Floyd();PII ans = {-1,-1};	// 答案城市编号,已经答案城市到各个点之间的最短距离之和while(k--){int a;cin >> a;	// 获取城市编号点int distSum = DistSum(a);	// 求最短距离之和if(ans.x == -1) ans = {a,distSum};	// 记录第一个点else if(ans.y > distSum) ans = {a,distSum};	// 更新更短的最短距离之和的点做 交通枢纽}// 输出答案cout << ans.x << ' ' << ans.y << endl;
}
signed main()
{
//	freopen("a.txt", "r", stdin);
//	___G;int _t = 1;
//	cin >> _t;while (_t--){solve();}return 0;
}

最后提交:

相关文章:

最短路径专题8 交通枢纽 (Floyd求最短路 )

题目&#xff1a; 样例&#xff1a; 输入 4 5 2 0 1 1 0 2 5 0 3 3 1 2 2 2 3 4 0 2 输出 0 7 思路&#xff1a; 由题意&#xff0c;绘制了该城市的地图之后&#xff0c;由给出的 k 个编号作为起点&#xff0c;求该点到各个点之间的最短距离之和最小的点是哪个&#xff0c;并…...

文件扫描模块

文章目录 前言文件扫描模块设计初级扫描方案一实现单线程扫描整合扫描步骤 设计初级扫描方案二周期性扫描 总结 前言 我们这个模块考虑的是数据库里面的内容从哪里获取。 获取完成后&#xff0c;这时候,我们就需要把目录里面文件/子文件都获取出来,并存入数据库。 文件扫描模…...

MySQL之主从复制

概述&#xff1a; 将主库的数据 变更同步到从库&#xff0c;从而保证主库和从库数据一致。 它的作用是 数据备份&#xff0c;失败迁移&#xff0c;读写分离&#xff0c;降低单库读写压力 原理&#xff1a; 主服务器上面的任何修改都会保存在二进制日志&#xff08; Bin-log日志…...

[leetcode 单调栈] 901. 股票价格跨度 M

设计一个算法收集某些股票的每日报价&#xff0c;并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数&#xff08;从今天开始往回数&#xff0c;包括今天&#xff09;。 例如&#xff0c;如果未来 7 天股票的价格是 [100…...

Java线程池:并发编程的利器

Java线程池&#xff1a;并发编程的利器 在多任务、高并发的时代&#xff0c;Java并发编程显得尤为重要。其中&#xff0c;Java线程池是一种高效的管理线程的工具&#xff0c;能够提高应用程序的性能和响应速度。本文将深入探讨Java线程池的工作原理、应用场景以及简单示例&…...

ARM硬件断点

hw_breakpoint 是由处理器提供专门断点寄存器来保存一个地址&#xff0c;是需要处理器支持的。处理器在执行过程中会不断去匹配&#xff0c;当匹配上后则会产生中断。 内核自带了硬件断点的样例linux-3.16\samples\hw_breakpoint\data_breakpoint.c static void sample_hbp_h…...

Java使用WebSocket(基础)

准备一个html页面 <!DOCTYPE HTML> <html> <head><meta charset"UTF-8"><title>WebSocket Demo</title> </head> <body><input id"text" type"text" /><button onclick"send()&…...

图像处理与计算机视觉--第五章-图像分割-自适应阈值分割

文章目录 1.自适应阈值分割介绍2.自适应阈值函数参数解析3.高斯概率函数介绍4.自适应阈值分割核心代码5.自适应阈值分割效果展示6.参考文章及致谢 1.自适应阈值分割介绍 在图片处理过程中&#xff0c;针对铺前进行二值化等操作的时候&#xff0c;我们希望能够将图片相应区域内所…...

记一次问题排查

1785年&#xff0c;卡文迪许在实验中发现&#xff0c;把不含水蒸气、二氧化碳的空气除去氧气和氮气后&#xff0c;仍有很少量的残余气体存在。这种现象在当时并没有引起化学家的重视。 一百多年后&#xff0c;英国物理学家瑞利测定氮气的密度时&#xff0c;发现从空气里分离出来…...

【Spring Boot】创建一个 Spring Boot 项目

创建一个 Spring Boot 项目 1. 安装插件2. 创建 Spring Boot 项目3. 项目目录介绍和运行注意事项 1. 安装插件 IDEA 中安装 Spring Boot Helper / Spring Assistant / Spring Initializr and Assistant插件才能创建 Spring Boot 项⽬ &#xff08;有时候不用安装&#xff0c;直…...

flutter中使用缓存

前言 在flutter项目中使用ListView或者PageView等有滚动条组件的时候&#xff0c;切换页面的时候&#xff0c;再切换回来会丢失之前的滑动状态&#xff0c;这个时候就需要需要使用缓存功能 缓存类 import package:flutter/material.dart;class KeepAliveWrapper extends Sta…...

京东数据分析平台:9月中上旬白酒消费市场数据分析

9月份&#xff0c;围绕白酒的热点不断。9月5日&#xff0c;瑞幸咖啡官微发布消息称&#xff0c;瑞幸与贵州茅台跨界合作推出的酱香拿铁刷新单品纪录&#xff0c;首日销量突破542万杯&#xff0c;销售额破1亿元。9月14日&#xff0c;贵州茅台官微发布消息称与德芙推出联名产品“…...

Linux安装 spark 教程详解

目录 一 准备安装包 二 安装 scala 三 修改配置文件 1&#xff09;修改 workers 文件 2&#xff09;修改 spark-env.sh文件 四 进入 spark 交互式平台 一 准备安装包 可以自行去 spark 官网下载想要的版本 这里准备了 spark3.1.2的网盘资源 链接: https://pan.baidu.com…...

动态内存管理函数(malloc,calloc,realloc,free)

动态内存函数 1.1malloc和free C语言提供了一个动态内存开辟的函数&#xff1a; void* malloc (size_t size); 这个函数向内存申请一块连续可用的空间&#xff0c;并返回指向这块空间的指针。 如果开辟成功&#xff0c;则返回一个指向开辟好空间的指针。如果开辟失败&#…...

云表|都有生产管理模块,MES和ERP有什么不同,该如何选择

MES和ERP是生产制造领域的两大知名系统&#xff0c;虽然早已声名鹊起&#xff0c;但仍有不少人难以明确区分两者的差异。下面将详细阐述这两个系统的不同之处。首先&#xff0c;要了解MES和ERP的定义。 MES系统&#xff1a;全称制造执行系统&#xff08;Manufacturing Executio…...

C语言 - 数组

目录 1. 一维数组的创建和初始化 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 2. 二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存储 3. 数组越界 4. 数组作为函数参数 4.1…...

Vue 中的插槽(Slot),有什么用,不同插槽的区别?

Vue 中的插槽&#xff08;Slot案例详解&#xff09; 是一种非常有用的功能&#xff0c;用于组件之间的内容分发和复用。以下是关于插槽的一些重要概念&#xff1a; 插槽的作用: 插槽允许你将组件的内容分发到其子组件中&#xff0c;以实现灵活的组件复用和自定义布局。通过插槽…...

Linux登录自动执行脚本

一、所有用户每次登录时自动执行。 1、在/etc/profile文件末尾添加。 将启动命令添加到/etc/profile文件末尾。 2、在/etc/profile.d/目录下添加sh脚本。 在/etc/profile.d/目录下新建sh脚本&#xff0c;设置每次登录自动执行脚本。有用户登录时&#xff0c;/etc/profile会遍…...

架构方法、模型、范式、治理

从架构方法、模型、范式、治理等四个方面介绍架构的概念和方法论、典型业务场景下的架构范式、不同架构的治理特点这3个方面的内容...

Linux 安全 - 内核提权

文章目录 前言一、简介1.1 prepare_creds1.2 commit_creds 二、demo参考资料 前言 在这篇文章&#xff1a;Linux 安全 - Credentials 介绍了 Task Credentials 相关的知识点&#xff0c;接下来给出一个内核编程提权的例程。 一、简介 内核模块提权主要借助于 prepare_creds …...

数字三角形加强版题解(组合计数+快速幂+逆元)

Description 一个无限行的数字三角形&#xff0c;第 i 行有 i 个数。第一行的第一个数是 1 &#xff0c;其他的数满足如下关系&#xff1a;如果用 F[i][j] 表示第 i 行的第 j 个数&#xff0c;那么 F[i][j]A∗F[i−1][j]B∗F[i−1][j−1] &#xff08;不合法的下标的数为 0 &a…...

MySQL:主从复制-基础复制(6)

环境 主服务器 192.168.254.1 从服务器&#xff08;1&#xff09;192.168.254.2 从服务器&#xff08;2&#xff09;192.168.253.3 我在主服务器上执行的操作会同步至从服务器 主服务器 yum -y install ntp 我们去配置ntp是需要让从服务器和我们主服务器时间同步 sed -i /…...

盒子模型的基础

盒子模型 边框&#xff08;border&#xff09; border可以设置元素的边框&#xff0c;边框分成三部分&#xff0c;边框的&#xff08;粗细&#xff09;边框的样式&#xff0c;边框的颜色 <style>div {width: 100px;height: 100px;border-width: 200;border-style: 边框…...

Go复合类型之数组类型

Go复合类型之数组 文章目录 Go复合类型之数组一、数组(Array)介绍1.1 基本介绍1.2 数组的特点 二、数组的声明与初始化2.1 数组声明2.2 常见的数据类型声明方法2.3 数组的初始化方式一&#xff1a;使用初始值列表初始化数组方法二&#xff1a;根据初始值个数自动推断数组长度方…...

rust闭包

一、闭包是什么 &#xff08;一&#xff09;闭包是什么 我们先来看看javascript中的闭包。 在函数外部无法读取函数内的局部变量。但是我们有时候需要得到函数内的局部变量&#xff0c;那么如何从外部读取局部变量&#xff1f;那就是在函数的内部&#xff0c;再定义一个函数。…...

通过位运算,实现单字段标识多个状态位

可能经常有如下这种需求: 需要一张表,来记录学员课程的通过与否. 课程数量不确定,往往很多,且会有变动,随时可能新增一门课. 这种情况下,在设计表结构时,一门课对应一个字段,就有些不合适, 因为不知道课程的具体数量,也无法应对后期课程的增加. 考虑只用一个状态标志位,利用位运…...

ALSA pcm接口的概念解释

PCM(数字音频)接口 PCM缩写: Pulse Code Modulation脉冲调制编码,我们理解为通过一定连续时间周期产生数字音频并带有音量样本的处理过程. 模拟信号被记录通过模拟到数字转换器,数字值(也就是某个特定时刻的音量值)获得来自ADC可以进一步处理,接下的图片展示的是个sine wavefor…...

logging的基本使用教程

logging的基本使用教程 一、简介&#xff1a; logging模块是Python的标准库&#xff0c;用于记录应用程序运行时的日志信息。使用logging模块可以帮助您在开发过程中调试代码、追踪问题和监控应用程序的运行状况。 二、使用教程 1、logging模块的基本使用方法&#xff1a; …...

ds套dp——考虑位置转移or值域转移:CF1762F

https://www.luogu.com.cn/problem/CF1762F 分析性质&#xff0c;就是我们选的数要么递增&#xff0c;要么递减&#xff08;非严格&#xff09;然后很明细是ds套dp&#xff0c; f i f_i fi​ 表示以 i i i 开头的答案然后考虑如何转移&#xff08;ds套dp难点反而在转移而不是…...

stm32的GPIO寄存器操作以及GPIO外部中断,串口中断

一、学习参考资料 &#xff08;1&#xff09;正点原子的寄存器源码。 &#xff08;2&#xff09;STM32F103最小系统板开发指南-寄存器版本_V1.1&#xff08;正点&#xff09; &#xff08;3&#xff09;STM32F103最小系统板开发指南-库函数版本_V1.1&#xff08;正点&a…...

平面设计素材网站排名/旺道seo工具

清代的著名制墨家曹素功&#xff0c;但是关于他到底叫什么&#xff1f;一直没有一个具体的定论&#xff0c;学者尹润生《漫谈满文墨》文称&#xff1a;“曹素功&#xff0c;名圣臣&#xff0c;字昌言&#xff0c;号荩庵”。而《尹润生墨苑鉴藏录》(尹润生著、尹雨立整理)&#…...

网站开发技术三大件/优化seo方案

nginx访问日志 查看nginx.conf文件 vim /usr/local/nginx/conf/nginx.conf 中间有一行是定义log的格式 log_format combined_realip $remote_addr $http_x_forwarded_for [$time_local] $host "$request_uri" $status "$http_referer" "$http_user_ag…...

如何建设动漫网站/百度云官网入口

转&#xff1a;http://www.360sps.com/Item/UseTopLink.aspx 在SharePoint 2010环境的页面中&#xff0c;导航链接总体上可以分为两类&#xff0c;一类是显示在左侧的快速启动栏&#xff0c;另一类就是显示在顶部的全部导航链接栏。这两种导航只支持2级菜单项&#xff0c;如果…...

电商网站开发主要技术问题/关于友情链接说法正确的是

当我们想要对应用程序的请求或响应进行一些预处理/后处理时&#xff0c;使用截取过滤器设计模式。 在将请求传递到实际目标应用程序之前&#xff0c;在请求上定义和应用过滤器。 过滤器可以进行请求的认证/授权/日志记录或跟踪&#xff0c;然后将请求传递给相应的处理程序。 以…...

o2o网站建设行业现状/四川seo多少钱

系统要求及安装前的说明 Oracle GoldenGate可以在Oracle不同版本间移动数据&#xff0c;也可以在Oracle和其它类型数据库之间移动数据。Oracle GoldenGate支持数据的过滤、映射和转换。Oracle还能在相似的Oracle数据库之间复制DDL操作。注意下面一句&#xff1a;当DDL支持被激…...

给别人做网站挣钱吗/国际军事最新头条新闻

问题描述&#xff1a;网站前端用vue&#xff0c;后端用java mvctomcat服务器&#xff0c;数据库access。由于数据库为共享文件&#xff0c;可能被通过前端网页修改&#xff0c;也可能被手动修改&#xff0c;还可能被windows应用程序修改。通过前端网页修改时&#xff0c;页面可…...