「一本通 3.2 例 3」架设电话线

题目大意

在加权无向图上求出一条从 1 号结点到 N 号结点的路径,使路径上第 K+1 大的边权尽量小。

思路

由于dj是一次性的,且这题数据极小,考虑Bellman-Ford

正常情况下Bellman-Ford是来更新dis数组的,不过这次是更新dp

dp_{i,j}表示第i个节点,k=jj可以等于零)

状态转移方程为:dp_{v,0}=min(dp_{v,0},max(dp_{u,0},w)),dp_{v,i}=min(dp_{u,i-1},dp_{v,i},max(w,dp_{u,i}))(1 \leqslant i \leqslant k)

题目就结束了

代码

#include<bits/stdc++.h>
#define y second
using namespace std;
const int N=1007;
int head[N],cnt=0;
struct node {int v,w,nxt;
} edge[20*N];
void add(int u,int v,int w) {edge[++cnt].v=v;edge[cnt].w=w;edge[cnt].nxt=head[u];head[u]=cnt;
}
priority_queue<pair<int,int>>q;
int d[N];
bool vis[N];
int n,m,s,u,v,w;
int dp[N][N];
int main() {memset(d,0x3f,sizeof(d));scanf("%d %d %d",&n,&m,&s);for(int i=1; i<=m; i++) {scanf("%d %d %d",&u,&v,&w);add(u,v,w);add(v,u,w);}memset(dp,0x3f,sizeof dp);dp[1][0]=0;for(int i=1; i<=n; i++) {bool flag=1;for(int u=1; u<=n; u++) {for(int i=head[u]; i; i=edge[i].nxt) {v=edge[i].v,w=edge[i].w;if(vis[v])continue;if(dp[v][0]>max(dp[u][0],w))dp[v][0]=max(dp[u][0],w),flag=0;for(int i=1; i<=s; i++)if(dp[v][i]>min(dp[u][i-1],max(w,dp[u][i])))dp[v][i]=min(dp[u][i-1],max(w,dp[u][i])),flag=0;}}if(flag)break;}int ans=0x3f3f3f3f;for(int i=0; i<=s; i++)ans=min(ans,dp[n][i]);printf("%d\n",((ans==0x3f3f3f3f)?(-1):ans));return 0;
}

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

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

相关文章

ansible实训-Day2(ansible基本问题及部署安装)

一、前言 该篇是对ansible实训第二天内容的归纳总结&#xff0c;主要包括ansible的一些基本问题以及ansible的部署安装。 二、理论部分 Q1&#xff1a;什么是ansible Ansible是一种自动化IT工具&#xff0c;它可以帮助管理和自动化IT基础架构。使用Ansible&#xff0c;管理员…

并发List:CopyOnWriteArrayList

CopyOnWriteArrayList 适合写多读少 介绍 JUC包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList&#xff0c;使用了写时复制策略&#xff0c;对其进行的修改操作都是在底层的一个复制的数组上进行的。 CopyOnWriteList 实现的接口和 Ar…

PACS医学影像系统(完整版)

一、PACS影像存取与传输系统以实现医学影像数字化存储、诊断为核心任务&#xff0c;从医学影像设备&#xff08;如CT、CR、DR、MR、DSA、RF等&#xff09;获取影像&#xff0c;集中存储、综合管理医学影像及病人相关信息&#xff0c;建立数字化工作流程。 二、系统可实现检查预…

python进行windows系统UI自动化之【pyautoit】

python进行windows系统UI自动化之【pyautoit】 一、AutoIT中文手册1.1、安装AutoIt1.2、使用Auto Window Info 二、python引用2.1、安装2.2、引用2.3、使用2.3.1、窗口操作2.3.2、控件操作2.3.3、进程操作2.3.4、鼠标操作2.3.5、键盘操作2.3.5.1、Send 是非常有用的一个函数/命…

C++ 程序设计入门

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

交换网络基础

交换网络基础 一、交换机的基础原理1.1、交换机1.2、小型交换网络1.3、交换机的转发行为1.4、交换机转发原理1.4.1、交换机初始状态1.4.2、学习MAC地址1.4.3、转发数据帧1.4.4、目标主机回复 1.5、基本配置1.6、总结 二、STP原理2.1、二层交换网络2.2、广播风暴&重复帧2.3、…

使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图

大家好&#xff0c;我是带我去滑雪&#xff01; 一幅精美的科研绘图会有诸多益处&#xff0c;精美的图像可以更好地传达研究结果和数据分析的重要信息。通过使用清晰、直观和易于理解的图像&#xff0c;可以更好地向读者展示研究的发现&#xff0c;有助于读者理解和解释数据。还…

Chrome/Edge 浏览器多账号登录,测试同一业务系统的不同账号角色

文章目录 如何使用多账户&#xff1f;ChromeEdge 虽然说用不同浏览器测试也比较方便、还能顺带测试多浏览器兼容问题…… 但我是开发呀&#xff0c;我只想用我最习惯的谷歌浏览器完成快速开发&#xff0c;把功能铺上&#xff0c;专注于业务逻辑的开发 这些浏览器差异等只会给我…

chatgpt赋能python:开方在Python中的用法

开方在Python中的用法 开方是数学中常见的一种运算&#xff0c;用于求一个数的平方根。在Python中&#xff0c;开方运算可以通过使用math模块中的sqrt函数来实现。本文将介绍开方运算的概念、Python中的应用以及一些常见问题的解决方法。 开方的概念 开方是指&#xff0c;对…

Yolov5-Face 原理解析及算法解析

YOLOv5-Face 文章目录 YOLOv5-Face1. 为什么人脸检测 一般检测&#xff1f;1.1 YOLOv5Face人脸检测1.2 YOLOv5Face Landmark 2.YOLOv5Face的设计目标和主要贡献2.1 设计目标2.2 主要贡献 3. YOLOv5Face架构3.1 模型架构3.1.1 模型示意图3.1.2 CBS模块3.1.3 Head输出3.1.4 stem…

java连接数据库的5种方式

方式一直接导入第三方库驱动类 这种加载方式在jdbc入门时已经用过&#xff0c;这个driver属于第三方库&#xff0c;。为静态加载&#xff0c;灵活性差&#xff0c;依赖性抢 方式二使用反射机制获取 方式一和方式二代码 package com.hsp.edu;import com.mysql.cj.jdbc.Driver;i…

【IP地址与子网掩码】网络杂谈(19)之IP地址分类与子网掩码的概念

涉及知识点 什么是子网掩码&#xff0c;IP地址的分类&#xff0c;子网掩码的概念&#xff0c;深入了解子网掩码与IP地址,A类&#xff0c;B类&#xff0c;C类&#xff0c;D类&#xff0c;E类ip地址范围。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可…