分层图最短路模板

#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 分层图相关推荐

  1. Loj#6223 Luogu P4009 汽车加油行驶 分层图最短路

    这是本蒟蒻博客的第一篇文章,不规范之处敬请各位大佬指正和谅解orz Loj#6223+Luogu P4009 文章目录 前言 一.建模 二.代码实现 1.节点在图中的编号(分层图的存储) 2.建边 对 ...

  2. 洛谷 - P4568 [JLOI2011]飞行路线(分层图最短路)

    题目链接:点击查看 题目大意:给出一张图,每条边都有权值,现在要求从点st到达点ed,沿途中可以让k条边的边权免费,现在求最短路 题目分析:分层图经典模板问题,直接套板子就行了,最后记得对于数组d的每 ...

  3. 洛谷 P4011 孤岛营救问题【最短路+分层图】

    题外话:昨夜脑子昏沉,今早一调试就过了...错误有:我忘记还有墙直接穿墙过...memset初始化INF用错了数...然后手残敲错一个状态一直过不了样例...要是这状态去比赛我简直完了......or ...

  4. [图论]分层图最短路

    ABC132 – E – Hopscotch Addict https://atcoder.jp/contests/abc132/tasks/abc132_e 分层图的思想很重要. 这题算比较简单的, ...

  5. BZOJ2662[BeiJing wc2012]冻结——分层图最短路

    题目描述 "我要成为魔法少女!"      "那么,以灵魂为代价,你希望得到什么?"  "我要将有关魔法和奇迹的一切,封印于卡片之中„„"  ...

  6. CodeForces - 1486E Paired Payment(分层图最短路)

    题目链接:点击查看 题目大意:给出一个 nnn 个点 mmm 条边组成的带权无向图,规定每次只能走两条边,假设走的两条边为 a−>b−>ca->b->ca−>b−> ...

  7. 洛谷P1073 Tarjan + 拓扑排序 // 构造分层图

    https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路,每条道路连接这 nn个城市中的某两个城市.任意两个城市之间最多只有一条道 ...

  8. 【HYSBZ - 2763 】飞行路线 (分层图最短路,最短路dp)

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

  9. Bzoj 2662: [BeiJing wc2012]冻结 dijkstra,堆,分层图,最短路

    2662: [BeiJing wc2012]冻结 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 647  Solved: 348 [Submit][S ...

最新文章

  1. 宋琦:PHP在微博优化中的“大显身手”
  2. python 天气预报
  3. struts2 简单应用
  4. 【NLP】基于GloVe词向量的迁移学习
  5. VTK:多边形曲面等高线插值用法实战
  6. Java虚拟机(JVM)参数配置说明
  7. SQLite3.8.4.2在Windows平台下的编译和使用
  8. 【杭州】Hack for Cloud Beginner微软黑客松大赛
  9. javafx 自定义控件_JavaFX技巧10:自定义复合控件
  10. 前端学习(2453):项目初始化
  11. oracle11g 密码大小写禁用及密码有效期限制
  12. collections模块之namedtuple
  13. C# 读取Execl和Access数据库
  14. 吕鑫MFC就业培训宝典学习笔记—创建一个简单的win32应用程序(2-1)
  15. 语言纸对折的厚度编写代码_分享几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码...
  16. 上海自考计算机应用基础实践,上海自考《计算机应用基础》试题练习(八)
  17. 组态王 力控 MCGS 瑞尔 杰控等国内组态软件一点看法
  18. Java集合(一)什么是集合
  19. Python转义符的使用
  20. Google两步验证安装使用方法

热门文章

  1. Linux 发行版之 CentOS 简介
  2. java通用编码规范考试_《java编码规范考试题答案》.doc
  3. 基2FFT算法matlab程序编写,频率抽取(DIF)基2FFT算法的MATLAB实现
  4. 一天发多少短信会封号_枸杞一天吃多少?吃多了会怎样?黑枸杞红枸杞哪个好?...
  5. java webmethod 参数_java详解Spring接收web请求参数的方式
  6. c mysql 地址池_FreeRadius 根据mysql 下发指定地址池的地址...
  7. python模块使用_一文让你学会所有的python模块使用
  8. 控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序
  9. 客制化键盘编程_客制化键盘劝退指南
  10. 【渝粤教育】国家开放大学2018年春季 0184-21T行政职业能力 参考试题