P4568 飞行路线 分层图最短路
P4568 飞行路线 分层图最短路
分层图最短路
问题模型
求最短路时,可有\(k\)次更改边权(减为0)
思路
在普通求\(Dijkstra\)基础上,\(dis[x][j]\)多开一维\(j\)以存已用了多少次机会,然后每次松弛时,做完普通松弛操作后,还要使用一次机会(如果可以),类同\(DP\)。
每次普通松弛:
\]
如果还可以使用(\(j<k\)):
\]
AC Code:
#include <cstdio>
#include <vector>
#include <cstring>
#include <queue>
#define MAXN 10010
#define MAXK 11
#define MIN(A,B) ((A)<(B)?(A):(B))
using namespace std;
int n,m,k,s,e;
bool vis[MAXN][MAXK];
struct edge{
int v,w;
edge(int v, int w):v(v),w(w){}
};
vector <edge> mp[MAXN];
struct item{
int dis, k, v;
item(int dis, int k, int v):dis(dis), k(k), v(v){}
bool operator < (const item a) const{
return dis > a.dis;
}
};
int dis[MAXN][MAXK];
priority_queue <item> q;
void Dij(){
memset(dis, 0x3f, sizeof(dis));
dis[s][0]=0;
q.push(item(0,0,s));
while(!q.empty()){
item cur = q.top();q.pop();
if(vis[cur.v][cur.k]) continue;
vis[cur.v][cur.k] = 1;
for(register int i=0;i<mp[cur.v].size();++i){
int v = mp[cur.v][i].v, w = mp[cur.v][i].w;
if(cur.k<k&&!vis[v][cur.k+1]&&dis[v][cur.k+1]>dis[cur.v][cur.k]){ // 使用机会
dis[v][cur.k+1] = dis[cur.v][cur.k];
q.push(item(dis[v][cur.k+1], cur.k+1, v));
}
if(!vis[v][cur.k]&&dis[v][cur.k]>dis[cur.v][cur.k]+w){ // 普通松弛
dis[v][cur.k] = dis[cur.v][cur.k]+w;
q.push(item(dis[v][cur.k], cur.k, v));
}
}
}
}
int main()
{
scanf("%d %d %d %d %d", &n, &m, &k, &s, &e),s++,e++;
for(int i=1;i<=m;++i){
int a,b,c;
scanf("%d %d %d", &a, &b, &c),++a,++b;
mp[a].push_back(edge(b,c));
mp[b].push_back(edge(a,c));
}
Dij();
int ans=0x3ffffff;
for(int i=0;i<=k;++i)
ans = MIN(ans, dis[e][i]); // 遍历统计答案,机会不一定用完
printf("%d", ans);
return 0;
}
P4568 飞行路线 分层图最短路的更多相关文章
- bzoj2763 [JLOI]飞行路线 分层图最短路
问题描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- P4568 [JLOI2011]飞行路线 分层图最短路
思路:裸的分层图最短路 提交:1次 题解: 如思路 代码: #include<cstdio> #include<iostream> #include<cstring> ...
- BZOJ2763: [JLOI2011]飞行路线(分层图 最短路)
题意 题目链接 Sol 分层图+最短路 建\(k+1\)层图,对于边\((u, v, w)\),首先在本层内连边权为\(w\)的无向边,再各向下一层对应的节点连边权为\(0\)的有向边 如果是取最大最 ...
- [JLOI2011]飞行路线 分层图最短路
题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在nn个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ...
- 【bzoj2763】[JLOI2011]飞行路线 分层图最短路
题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
- BZOJ2763[JLOI2011]飞行路线 [分层图最短路]
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2523 Solved: 946[Submit][Statu ...
- [JLOI2011]飞行路线 (分层图,最短路)
题目链接 Solution 建立 \(k+1\) 层图跑 \(Dijkstra\) 就好了. Code #include<bits/stdc++.h> #define ll long lo ...
- [bzoj2763][JLOI2011]飞行路线——分层图最短路
水题.不多说什么. #include <bits/stdc++.h> using namespace std; const int maxn = 10010; const int maxk ...
随机推荐
- nginx1.14.0版本location路径,多级文件目录配置,root与alias的配置区别
1.多级目录配置 多级目录是指像/html/mypage 等等配置: server { listen 80; server_name localhost; location = /page1/ { # ...
- 编译基于obs-studio的阿里巴巴直播工具tblive的过程和常见问题解决
tblive 简介 tblive开源项目对应的产品是千牛主播,是一个独立的PC端主播工具,基于开源软件OBS Studio来修改定制. 项目说明 tblive是一款优秀的基于obs-studio的直播 ...
- Oracle.EntityFrameworkCore使用时报错:Specified cast is not valid
我用的是:Oracle.EntityframeworkCore 2.19.30 如果看到报错:System.InvalidCastException:“Specified cast is not va ...
- git下,输入git log 进入log 怎么退出
解决方案: 英文状态下按Q就可以了 ctrl + c (应该是Linux命令中断的意思,很多中断都是这个命令). Paste_Image.png
- 浅谈Vue.js2.0某些概念
Vue.js2.0是一套构建用户界面的渐进式框架,目标是实现数据驱动和组件系统. A 渐进式框架 Vue.js是一个提供MVVM数据双向绑定的库,只专注于UI层面,这是它的核心.它本身没有解决SP ...
- hash文件-对文件进行数字签名
(一)windows自带hash命令: certutil -hashfile D:\1.exe MD5 # md5的hash值为32位certutil -hashfile ...
- Android笔记(五十九)Android总结:四大组件——Service篇
什么是服务? 服务(service)是Android中实现程序后台运行的解决方案,适用于去执行那些不需要和用户交互并且还需要长期运行的任务.服务的运行不依赖于任何用户界面. 服务运行在主线程中,所以在 ...
- 快速入门 Python 数据分析实用指南
Python 现如今已成为数据分析和数据科学使用上的标准语言和标准平台之一.那么作为一个新手小白,该如何快速入门 Python 数据分析呢? 下面根据数据分析的一般工作流程,梳理了相关知识技能以及学习 ...
- cpio命令
RPM包中文件提取 cpio命令主要有三种基本模式:"-o"模式指的是copy-out模式,就是把数据备份到文件库中:"-i"模式指的是copy-in模式,就是 ...
- LeetCode初级算法--字符串02:字符串中的第一个唯一字符
LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...