bzoj 2763:[JLOI2011]飞行路线(luogu 4568)
算法:分层图
难度:NOIP
还是易见分层图,跑一跑就好了,根据上一道题留下的坑,我写出了DP的分层图。
代码如下:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <deque>
#include <algorithm>
#define N 50005
using namespace std;
struct node
{int next;int to;int val;
}edge[N<<1];
int head[N],dis[N][15],vis[N][15];
int cnt=1;
void init()
{memset(head,-1,sizeof(head));cnt=1;
}
void add(int u,int v,int w)
{edge[cnt].next=head[u];edge[cnt].to=v;edge[cnt].val=w;head[u]=cnt++;
}
struct no
{int po;int d;int f;
};
priority_queue<no>Q;
bool operator < (no a,no b)
{return a.d>b.d;
}
int sta,des;
int n,m,k;
void dijks(int rt)
{memset(dis,0x3f3f3f3f,sizeof(dis));no p;p.po=rt;p.d=0;p.f=0;dis[rt][0]=0;Q.push(p);while(!Q.empty()){no tem=Q.top();Q.pop();int f=tem.f;if(vis[tem.po][f]) continue;vis[tem.po][f]=1;int u=tem.po,d=tem.d;if(u==des){printf("%d\n",tem.d);exit(0);}for(int i = head[u];i != -1;i=edge[i].next){int to=edge[i].to;no pp;if((f<k)&&(!vis[to][f+1])&&(dis[to][f+1]>d)){dis[to][f+1]=d;pp.po=to;pp.d=d;pp.f=f+1;Q.push(pp);}if(!vis[to][f]&&dis[to][f]>d+edge[i].val);{dis[to][f]=d+edge[i].val;pp.po=to;pp.d=dis[to][f];pp.f=f;Q.push(pp);}}}
}
int main()
{init();scanf("%d%d%d",&n,&m,&k);scanf("%d%d",&sta,&des);for(int i = 1;i <= m;i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);add(u,v,w);add(v,u,w);}dijks(sta);return 0 ;
}
bzoj 2763:[JLOI2011]飞行路线(luogu 4568)相关推荐
- bzoj 2763 [JLOI2011]飞行路线——分层图
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2763 分层图两种方法的练习. 1.把图分成k+1层,本层去上面一层的边免费.但空间时间都不算 ...
- BZOJ 2763: [JLOI2011]飞行路线 spfa dp
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2763 题解: d[x][kk]表示从s到x用了kk次免费机会的最少花费. 代码: #in ...
- BZOJ 2763: [JLOI2011]飞行路线 【SPFA】
Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格.Al ...
- BZOJ 2763[JLOI2011]飞行路线 - 最短路
描述 给出一个无向图, 出发地$s$和目的地$t$, 让你求出不计算 任意$K$条边权值 的最短路 题解 刚开始我是用记忆化搜索记录状态$F_{i, k}$, 表示从出发地出发 到第$i$个城市, 还 ...
- bzoj2763 [JLOI2011]飞行路线
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3216 Solved: 1230 [Submit][St ...
- P4568 [JLOI2011]飞行路线
P4568 [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1 ...
- 洛谷P4568 [JLOI2011] 飞行路线 题解
洛谷P4568 [JLOI2011] 飞行路线 题解 题目链接:P4568 [JLOI2011] 飞行路线 题意: Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公 ...
- 洛谷 P4568 [JLOI2011] 飞行路线(分层图最短路)
[JLOI2011] 飞行路线 题目描述 Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在 n n n 个城市设有业务,设这些城市分别标记为 0 0 0 到 ...
- 洛谷 4568 [JLOI2011] 飞行路线
题目戳这里 一句话题意: 有n个点,m条边的有向图,最多可以把k条边变为0,求从起点到终点最短距离. Solution 首先看到这题目,感觉贼难,看起来像DP,貌似也有大佬这么做,但鉴于本蒟蒻思维能力 ...
- JLOI2011 飞行路线
洛谷 BZOJ 分析 经典的分层最短路题(我不会). 建 \(k+1\) 层图,跑一遍最短路,找到 \(dis[i]\) 最小的一个. 代码 #include <queue> #inclu ...
最新文章
- 机房收费系统总结【3】-数据库细节
- nginx虚拟目录设置 alias 和 root
- 算法战:需要人工智能生态系统来增强安全性
- 【 karle 专栏 】Android 初探底层知识系列
- Visual Studio找不到iOS模拟器
- 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程
- jsp session
- 图片随意移动,可以拖动图片计算
- 【Java】@ResponseBody 返回JsonObject
- 移动开发语言Swift
- 16kb等于多少b_MySQL为何选择B+树存储索引?
- 自定义 QTreeView
- python-opencv:在视频中显示fps等opencv快速入门
- Java 订单管理系统
- Android:H5 通过 URL Scheme 拉起app应用
- 5 款常用的 C++ 在线编译器推荐
- 为什么今年的苹果手机不支持5G?原因有四点,网友:错怪库克了
- iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
- SD卡SPI模式入门教程
- mysql容器保存为镜像实战操作(拷贝方法)