题目

一个无向图,每条边都有花费,可以有\(k\)次挑选边去除花费的机会,问从指定起点到指定终点的最小花费


分析

考虑用分层最短路完成,也就是在同一层走需要花费,不同层走不用花费,最终走到最底层,然后需要建\(k\)层,再跑一个\(\text{Dijkstra}\)就可以了


代码

#include <cstdio>
#include <cctype>
#include <queue>
#include <cstring>
#define rr register
#define min(a,b) ((a)<(b)?(a):(b))
using namespace std;
const int N=110011;
struct rec{
int w,u;
bool operator <(const rec &t)const{
return w>t.w;
}
};
struct node{int y,w,next;}e[N*20]; bool v[N];
int n,m,cnt,k,st,en,ans,ls[N],dis[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void add(int x,int y,int w){e[++cnt]=(node){y,w,ls[x]},ls[x]=cnt;};
priority_queue<rec>q;
signed main(){
n=iut(),m=iut(),k=iut(),st=iut()+1,en=iut()+1;
for (rr int i=1;i<=m;++i){
rr int x=iut()+1,y=iut()+1,w=iut();
add(x,y,w),add(y,x,w);
for (rr int j=1;j<=k;++j){
add(x+j*n,y+j*n,w),add(x+j*n-n,y+j*n,0),
add(y+j*n,x+j*n,w),add(y+j*n-n,x+j*n,0);
}
}
memset(dis,42,sizeof(dis)),dis[st]=0;
q.push((rec){0,st}),ans=dis[0];
while (q.size()){
rr rec t=q.top(); rr int x=t.u,now=t.w; q.pop();
if (dis[x]!=now||v[x]) continue; v[x]=1;
for (rr int i=ls[x];i;i=e[i].next)
if (dis[e[i].y]>dis[x]+e[i].w){
dis[e[i].y]=dis[x]+e[i].w;
q.push((rec){dis[e[i].y],e[i].y});
}
}
for (rr int i=0;i<=k;++i) ans=min(ans,dis[i*n+en]);
return !printf("%d",ans);
}

#分层图最短路,Dijkstra#洛谷 4568 [JLOI2011]飞行路线的更多相关文章

  1. 洛谷 4568 [JLOI2011] 飞行路线

    题目戳这里 一句话题意: 有n个点,m条边的有向图,最多可以把k条边变为0,求从起点到终点最短距离. Solution 首先看到这题目,感觉贼难,看起来像DP,貌似也有大佬这么做,但鉴于本蒟蒻思维能力 ...

  2. BZOJ 1579: [Usaco2009 Feb]Revamping Trails 道路升级 分层图最短路 + Dijkstra

    Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i ...

  3. [洛谷P4568][JLOI2011]飞行路线

    题目大意:最短路,可以有$k$条边无费用 题解:分层图最短路,建成$k$层,层与层之间的边费用为$0$ 卡点:空间计算出错,建边写错 C++ Code: #include <cstdio> ...

  4. 洛谷 P4568 [JLOI2011]飞行路线 解题报告

    P4568 [JLOI2011]飞行路线 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在\(n\)个城市设有业务,设这些城市分别标记为0到\(n−1\ ...

  5. 洛谷 P4568 [JLOI2011]飞行路线 题解

    P4568 [JLOI2011]飞行路线 题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在\(n\)个城市设有业务,设这些城市分别标记为\(0\)到\( ...

  6. 洛谷 P4568 [JLOI2011]飞行路线

    题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...

  7. 分层图最短路【bzoj2763】: [JLOI2011]飞行路线

    bzoj2763: [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0 ...

  8. 2019牛客多校第四场J free——分层图&&最短路

    题意 一张无向图,每条边有权值,可以选择不超过 $k$ 条路使其权值变成0,求 $S$ 到 $T$ 的最短路.(同洛谷 P4568) 分析 首先,分层图最短路可以有效解决这种带有 「阶段性」的最短路, ...

  9. poj3635Full Tank?[分层图最短路]

    Full Tank? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7248   Accepted: 2338 Descri ...

  10. BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路

    BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路 Description “我要成为魔法少女!”     “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切, ...

随机推荐

  1. 负载均衡load balancing和算法分类概要介绍

    一.负载均衡介绍 1.1 什么是负载均衡 负载均衡(load balancing) 它是计算机的一种技术,用来在计算机集群.网络连接.CPU.磁盘驱动器或其他资源中分配负载,以达到优化资源使用.最大化 ...

  2. 【Azure Function App】Java Function在运行中遇见内存不足的错误

    问题描述 在Function的Code+Test界面进行函数触发可以成功.因为Function为Blob Trigger,当在Blob容器下上传文件后,Function可以被正常触发但是报 outof ...

  3. 【Azure Redis 缓存】Azure Redis 异常 - 因线程池Busy而产生的Timeout异常问题

    问题描述 StackExchange.Redis在使用线程池后,偶尔会出现Timeout awaiting response 或者 No connection is available to serv ...

  4. 【Azure 应用服务】App Service下部署的应用报错 Out of Memory

    问题描述 应用部署到App Service后,遇见了Out of Memory的错误. 报错信息:GetData  Error:, Exception of type 'System.OutOfMem ...

  5. 今天接到一个根据excel来更新数据库的需求,用php写个小脚本

    需求大概内容是,excel中有些条目需要删除.有些需要新增,就需要基于这份excel生成删.增的SQL. 要求是这样的:蓝色要删除的,黄色是要新增的,白色和灰色的不用管. 我第一时间就在想:还得识别单 ...

  6. BeanShell Sample 如何使用?

    一 引入: eanShell Sample主要用于生成一些逻辑复杂的数据,例如用于加解密数据: **每次调用前重置bsh.Interpreter:每个BeanShell副本都有自己的解释器副本(每个线 ...

  7. RocketMQ(8) 消费幂等

    1 什么是消费幂等 当出现消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次消 费并未对业务系统产生任何负面影响,那么这个消费过程就是消费幂等的. 幂等:若某操作执行多 ...

  8. C++ Qt开发:QHostInfo主机地址查询组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QHo ...

  9. P8+架构师养成计划

    一.P8+要求 1.收集能力要求 1.专业能力 技术架构.业务架构.做到无中生有. 2.基石能力 沟通协调能力.团队管理能力.逻辑能力.风险控制能力. 3.影响力 团队内部影响.外部影响.行业影响力. ...

  10. import.meta.globEager('./src/components/**/*.vue'); 遍历文件

    main.js const importAll = (modules) => { Object.keys(modules).forEach((key) => { const compone ...