50: Luogu P4568 分层图
分层图最短路模板
#include <iostream> #include <cstdio> #include <cstdlib> #include <ctime> #include <queue> #include <cstring>using namespace std;const int M = 2e6 + 5e5 + 10;#define gc getchar() inline int read() {int x = 0, f = 1; char c = gc;while(c < '0' || c > '9') {if(c == '-') f = -1; c = gc;}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc;return x * f; }int dis[M], head[M], cnt, vis[M]; struct Node {int u, v, nxt, w; } G[M];struct Node1 {int u, dis;bool operator < (const Node1 a) const {return this->dis > a.dis;} };priority_queue <Node1> Q;int n, m, k; int s, t;void Link(int u, int v, int w) {G[++ cnt].v = v; G[cnt].u = u; G[cnt].w = w; G[cnt].nxt = head[u]; head[u] = cnt; }void Dijkstra() {memset(dis, 0x3f, sizeof dis);Q.push((Node1){s, 0});dis[s] = 0;while(!Q.empty()) {Node1 tp = Q.top();Q.pop();if(vis[tp.u]) continue;vis[tp.u] = 1;for(int i = head[tp.u]; ~ i; i = G[i].nxt) {int v = G[i].v;if(dis[v] > dis[tp.u] + G[i].w) {dis[v] = dis[tp.u] + G[i].w;Q.push((Node1) {v, dis[v]});}}} }int main() {n = read(), m = read(), k = read();for(int i = 1; i <= n * k + n; i ++) head[i] = -1;s = read() + 1, t = read() + 1;for(int i = 1; i <= m; i ++) {int u = read() + 1, v = read() + 1, w = read();for(int j = 0; j < k; j ++) {Link(j * n + u, j * n + v, w);Link(j * n + v, j * n + u, w);Link(j * n + u, (j + 1) * n + v, 0);Link(j * n + v, (j + 1) * n + u, 0);}Link(n * k + u, n * k + v, w);Link(n * k + v, n * k + u, w);}Dijkstra();int Ans = (1 << 30);for(int i = 0; i <= k; i ++) {Ans = min(Ans, dis[i * n + t]);}cout << Ans;return 0; }
转载于:https://www.cnblogs.com/shandongs1/p/9933195.html
50: Luogu P4568 分层图相关推荐
- Loj#6223 Luogu P4009 汽车加油行驶 分层图最短路
这是本蒟蒻博客的第一篇文章,不规范之处敬请各位大佬指正和谅解orz Loj#6223+Luogu P4009 文章目录 前言 一.建模 二.代码实现 1.节点在图中的编号(分层图的存储) 2.建边 对 ...
- 洛谷 - P4568 [JLOI2011]飞行路线(分层图最短路)
题目链接:点击查看 题目大意:给出一张图,每条边都有权值,现在要求从点st到达点ed,沿途中可以让k条边的边权免费,现在求最短路 题目分析:分层图经典模板问题,直接套板子就行了,最后记得对于数组d的每 ...
- 洛谷 P4011 孤岛营救问题【最短路+分层图】
题外话:昨夜脑子昏沉,今早一调试就过了...错误有:我忘记还有墙直接穿墙过...memset初始化INF用错了数...然后手残敲错一个状态一直过不了样例...要是这状态去比赛我简直完了......or ...
- [图论]分层图最短路
ABC132 – E – Hopscotch Addict https://atcoder.jp/contests/abc132/tasks/abc132_e 分层图的思想很重要. 这题算比较简单的, ...
- BZOJ2662[BeiJing wc2012]冻结——分层图最短路
题目描述 "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中„„" ...
- CodeForces - 1486E Paired Payment(分层图最短路)
题目链接:点击查看 题目大意:给出一个 nnn 个点 mmm 条边组成的带权无向图,规定每次只能走两条边,假设走的两条边为 a−>b−>ca->b->ca−>b−> ...
- 洛谷P1073 Tarjan + 拓扑排序 // 构造分层图
https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路,每条道路连接这 nn个城市中的某两个城市.任意两个城市之间最多只有一条道 ...
- 【HYSBZ - 2763 】飞行路线 (分层图最短路,最短路dp)
题干: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价 ...
- Bzoj 2662: [BeiJing wc2012]冻结 dijkstra,堆,分层图,最短路
2662: [BeiJing wc2012]冻结 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 647 Solved: 348 [Submit][S ...
最新文章
- 宋琦:PHP在微博优化中的“大显身手”
- python 天气预报
- struts2 简单应用
- 【NLP】基于GloVe词向量的迁移学习
- VTK:多边形曲面等高线插值用法实战
- Java虚拟机(JVM)参数配置说明
- SQLite3.8.4.2在Windows平台下的编译和使用
- 【杭州】Hack for Cloud Beginner微软黑客松大赛
- javafx 自定义控件_JavaFX技巧10:自定义复合控件
- 前端学习(2453):项目初始化
- oracle11g 密码大小写禁用及密码有效期限制
- collections模块之namedtuple
- C# 读取Execl和Access数据库
- 吕鑫MFC就业培训宝典学习笔记—创建一个简单的win32应用程序(2-1)
- 语言纸对折的厚度编写代码_分享几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码...
- 上海自考计算机应用基础实践,上海自考《计算机应用基础》试题练习(八)
- 组态王 力控 MCGS 瑞尔 杰控等国内组态软件一点看法
- Java集合(一)什么是集合
- Python转义符的使用
- Google两步验证安装使用方法
热门文章
- Linux 发行版之 CentOS 简介
- java通用编码规范考试_《java编码规范考试题答案》.doc
- 基2FFT算法matlab程序编写,频率抽取(DIF)基2FFT算法的MATLAB实现
- 一天发多少短信会封号_枸杞一天吃多少?吃多了会怎样?黑枸杞红枸杞哪个好?...
- java webmethod 参数_java详解Spring接收web请求参数的方式
- c mysql 地址池_FreeRadius 根据mysql 下发指定地址池的地址...
- python模块使用_一文让你学会所有的python模块使用
- 控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序
- 客制化键盘编程_客制化键盘劝退指南
- 【渝粤教育】国家开放大学2018年春季 0184-21T行政职业能力 参考试题