洛谷 P8724 [蓝桥杯 2020 省 AB3] 限高杆

news/2025/2/3 0:23:29/

洛谷题目传送门

题目描述

某市有 n 个路口,有 m 段道路连接这些路口,组成了该市的公路系统。其中一段道路两端一定连接两个不同的路口。道路中间不会穿过路口。

由于各种原因,在一部分道路的中间设置了一些限高杆,有限高杆的路段货车无法通过。

在该市有两个重要的市场 A 和 B,分别在路口 1 和 n 附近,货车从市场 A 出发,首先走到路口 1,然后经过公路系统走到路口 n,才能到达市场 B。两个市场非常繁华,每天有很多货车往返于两个市场之间。

市长发现,由于限高杆很多,导致货车可能需要绕行才能往返于市场之间,这使得货车在公路系统中的行驶路程变长,增加了对公路系统的损耗,增加了能源的消耗,同时还增加了环境污染。

市长决定要将两段道路中的限高杆拆除,使得市场 A 和市场 B 之间的路程变短。请问最多能减少多长的距离?

输入格式

输入的第一行包含两个整数 n,m,分别表示路口的数量和道路的段数。

接下来 mm 行,每行四个整数 a,b,c,d,表示路口 a 和路口 b 之间有一段长度为 c 的道路。如果 d 为 0,表示这段道路上没有限高杆; 如果 d 为 1,表示 这段道路上有限高杆。两个路口之间可能有多段道路。

输入数据保证在不拆除限高杆的情况下,货车能通过公路系统从路口 1 正常行驶到路口 n 。

输出格式

输出一行,包含一个整数,表示拆除两段道路的限高杆后,市场 A 和市场 B 之间的路程最大减少多长距离。

输入输出样例

输入 

5 7
1 2 1 0
2 3 2 1
1 3 9 0
5 3 8 0
4 3 5 1
4 3 9 0
4 5 4 0

输出 

6

说明/提示

【样例说明】

只有两段道路有限高杆,全部拆除后,1 到 n 的路程由原来的 17 变为了 11,减少了 6。

【评测用例规模与约定】

对于 30% 的评测样例,2≤n≤10,1≤m≤20,1≤c≤100。

对于 50% 的评测样例,2≤n≤100,1≤m≤1000,1≤c≤1000。

对于 70% 的评测样例,2≤n≤1000,1≤m≤10000,1≤c≤10000。

对于所有评测样例,2≤n≤10000,2≤m≤10^{5},1≤c≤10000,至少 有两段道路有限高杆。

蓝桥杯 2020 第三轮省赛 AB 组 H 题。

思路

由题目很明显看出是最短路

由于我们可以拆除 2 个 限高杆,由很多种情况,当最短路和选择在一起的时候,我们变要用分层思想

很明显看出,我们需要设计 0,1,2三层分别表示拆了0,1,2个限高杆的情况

如果两点之间有限高杆,那么我们就建立各个层之间的路径;否则就建立单层之间的路径

Code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=6e5+5;
ll n,m,w[N],di[N],dis[N],vis[N],to[N],ne[N],h[N],tot=0;
struct S{ll x,y;
}a[N];
void add(ll u,ll v,ll d){tot++;to[tot]=v;w[tot]=d;ne[tot]=h[u];h[u]=tot;
}
void spfa1(ll o){//求出不拆限高杆的情况下,货车到 n 的距离memset(vis,0,sizeof(vis));memset(di,0x7f,sizeof(di));di[o]=0;vis[o]=1;queue<ll>q;q.push(o);while(!q.empty()){ll u=q.front();q.pop();vis[u]=0;for(ll i=h[u];i;i=ne[i]){ll v=to[i];if(v>n)continue;//由于不拆限高杆,每次更新的点只能在第 0 层,即点的编号不大于 nif(di[v]>di[u]+w[i]){di[v]=di[u]+w[i];if(!vis[v]){q.push(v);vis[v]=1;}}}}
}
void spfa(ll o){//求出拆掉限高杆的情况下,货车到 n 的距离memset(vis,0,sizeof(vis));memset(dis,0x7f,sizeof(dis));dis[o]=0;vis[o]=1;queue<ll>q;q.push(o);while(!q.empty()){ll u=q.front();q.pop();vis[u]=0;for(ll i=h[u];i;i=ne[i]){ll v=to[i];if(dis[v]>dis[u]+w[i]){dis[v]=dis[u]+w[i];if(!vis[v]){q.push(v);vis[v]=1;}}}}
}
int main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;int x,y,z,i1;for(ll i=1;i<=m;i++){cin>>x>>y>>z>>i1;if(i1==0){add(x,y,z);add(y,x,z);add(x+n,y+n,z);add(y+n,x+n,z);add(x+n+n,y+n+n,z);add(y+n+n,x+n+n,z);}
//如果路上没有限高杆,则无论拆了几个限高杆,都可以走这条路,建立同层间的路else{//否则建立跨越 0 层与 1 层  或  1 层与 2 层 的路,即向上跑一层add(x,y+n,z);add(x+n,y+n+n,z);add(y,x+n,z);add(y+n,x+n+n,z);}}spfa1(1);spfa(1);cout<<max(di[n]-dis[n],max(di[n]-dis[n+n],di[n]-dis[n+n+n]));//最大的变化量可能在 n , 2n , 3n 上取到return 0;
}


http://www.ppmy.cn/news/1568820.html

相关文章

【暴力洗盘】的实战技术解读-北玻股份和三变科技

龙头的上攻与回调动作都是十分惊人的。不惊人不足以吸引投资者的关注&#xff0c;不惊人也就不能成为龙头了。 1.建筑节能概念--北玻股份 建筑节能&#xff0c;是指在建筑材料生产、房屋建筑和构筑物施工及使用过程中&#xff0c;满足同等需要或达到相同目的的条件下&#xf…

6.攻防世界php_rce

进入题目页面如下 进入页面后也没有发现注入点&#xff0c;加上题目提示是php&#xff0c;还有rce RCE&#xff08;Remote Code Execution&#xff09;远程代码执行漏洞 基本概念 远程代码执行指攻击者无需物理接触目标系统&#xff0c;通过网络等远程方式&#xff0c;向目标…

Redis 基础命令

1. redis 命令官网 https://redis.io/docs/latest/commands/ 2. 在 redis-cli 中使用 help 命令 # 查看 help string 基础命令 keys * # * 代表通配符set key value # 设置键值对del key # 删除键expire key 时间 # 给键设置时间 # -2 代表时间到期了&#xff0c; -1 代表…

stm32硬件实现与w25qxx通信

使用的型号为stm32f103c8t6与w25q64。 STM32CubeMX配置与引脚衔接 根据stm32f103c8t6引脚手册&#xff0c;采用B12-B15四个引脚与W25Q64连接&#xff0c;实现SPI通信。 W25Q64SCK&#xff08;CLK&#xff09;PB13MOSI&#xff08;DI&#xff09;PB15MISO(DO)PB14CS&#xff08…

Java动态代理:原理与实现

在Java编程中&#xff0c;代理模式是一种常见的设计模式&#xff0c;它允许我们通过一个代理对象来控制对另一个对象的访问。代理模式的主要目的是在不改变原始类代码的情况下&#xff0c;增强或修改其行为。Java中的代理分为静态代理和动态代理两种。本文将重点介绍动态代理&a…

docker安装Redis:docker离线安装Redis、docker在线安装Redis、Redis镜像下载、Redis配置、Redis命令

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull redis:7.4.0 2、离线包下载 两种方式&#xff1a; 方式一&#xff1a; -&#xff09;在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -&#xff09;导出 # 导出镜像…

2025最新源支付V7全套开源版+Mac云端+五合一云端

2025最新源支付V7全套开源版Mac云端五合一云端 官方1999元&#xff0c; 最新非网上那种功能不全带BUG开源版&#xff0c;可以自己增加授权或二开 拥有卓越的性能和丰富的功能。它采用全新轻量化的界面UI&#xff0c;让您能更方便快捷地解决知识付费和运营赞助的难题 它基于…

DRM系列二:DRM总体介绍

一、简介 DRM&#xff0c;全称Direct Rending Manger。是目前Linux主流的图形显示框架。相比较传统的Framebuffer&#xff08;FB原生不支持多层合成&#xff0c;不支持VSYNC&#xff0c;不支持DMA-BUF&#xff0c;不支持异步更新&#xff0c;不支持fence机制等等&#xff09;&…