ABC132 – E – Hopscotch Addict
https://atcoder.jp/contests/abc132/tasks/abc132_e
分层图的思想很重要。
这题算比较简单的,因为每次都要走三步,我们假设每次只走一步,那么每个点就有三种状态:起点(终点)、走一步到达的点、走两步到达的点,那么我们把图分成三层,每走一步相当于往下一层图走,只有每三步到达的点才是最终停下来的点,连边的时候就连到下一层对应的点,这个方法同时也能很好的处理环的情况,建完图bfs一下就好了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5, inf = 0x3f3f3f3f;vector<int> g[3 * maxn];
int d[3 * maxn];int main()
{ios::sync_with_stdio(0); cin.tie(0);int n, m;cin >> n >> m;while (m--){int u, v;cin >> u >> v;//模3循环,点分成3层,模3为0的u连到模3为1的v,后面同理g[3 * u].push_back(3 * v + 1);g[3 * u + 1].push_back(3 * v + 2);g[3 * u + 2].push_back(3 * v);}int s, t;cin >> s >> t;queue<int> qi;qi.push(3 * s);while (!qi.empty()){int u = qi.front(); qi.pop();for (int v : g[u]) if (!d[v]) {d[v] = d[u] + 1;qi.push(v);}}cout << (d[3 * t] ? d[3 * t] / 3 : -1) << endl;return 0;
}

洛谷 – P4568 – [JLOI2011]飞行路线
https://www.luogu.org/problem/P4568

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
const int maxn = 1e5 + 1e4 + 10;
struct edge{int v, c;
};
vector<edge> g[maxn];
int d[maxn];
int main()
{int n, m, k, q, z, u, v, c;scanf("%d %d %d %d %d", &n, &m, &k, &q, &z);++k;//多搞一层for (int i = 1; i <= m; ++i){scanf("%d %d %d", &u, &v, &c);for (int j = 0; j < k; ++j){if (j < k - 1) g[k * u + j].emplace_back(edge{k * v + j + 1, 0});if (j < k - 1) g[k * v + j].emplace_back(edge{k * u + j + 1, 0});g[k * u + j].emplace_back(edge{k * v + j, c});g[k * v + j].emplace_back(edge{k * u + j, c});}}memset(d, 0x3f, sizeof(d));d[k * q] = 0;priority_queue<pii, vector<pii>, greater<pii> > pqi;pqi.push(pii(0, k * q));while(!pqi.empty()){pii e = pqi.top(); pqi.pop();if (d[e.second] < e.first) continue;int u = e.second, c = e.first;for (edge te : g[u]){if (d[te.v] > c + te.c){d[te.v] = c + te.c;pqi.push(pii(d[te.v], te.v));}}}int ans = inf;for (int i = 0; i < k; ++i) ans = min(ans, d[z * k + i]);printf("%d\n", ans);return 0;
}

[图论]分层图最短路相关推荐

  1. 图论 ---- E. Minimum Path(分层图最短路 用分层图对边权操作进行选择)

    题目链接 题目大意: 两点间最短路的定义变成:所有的边之和−max+min所有的边之和-max+min所有的边之和−max+min 解题思路: 这里很明显就是变成了最短路的时时候就是把路径上边权最小值 ...

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

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

  3. 洛谷 - P4009 汽车加油行驶问题(分层图最短路/最小费用最大流)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵表示道路,途中有一些加油站,现在要从点(1,1)到达点(n,n),问最小花费,其中的一些规则如下: 汽车只能沿着网格边行驶,装满油后可以行驶K条边,出 ...

  4. POJ - 3662 Telephone Lines(分层图最短路)

    题目链接:点击查看 题目大意:在郊区有N座通信基站,P条双向电缆,第i条电缆连接基站Ai和Bi.特别的,1号基站是通信公司的总站,N号基站位于一座农场中.现在,农场主希望对通信线路进行升级,其中升级第 ...

  5. codeforces1473 E.Minimum Path(分层图最短路)

    E - Minimum Path 分层图最短路 第一个分层图 第0层就是按照题中给的点连边,从第0层到第1层我们连一条边权是0的边,从第1层到第2层连一条边权是原先边权2倍的边,当然第1层以及第2层之 ...

  6. 【bzoj2834】回家的路 分层图最短路

    题目描述 输入 输出 样例输入 2 1 1 2 1 1 2 2 样例输出 5 题解 分层图最短路 dis[i][0]表示到i为横向时起点到i的最短路,dis[i][1]表示到i为纵向时起点到i的最短路 ...

  7. 【算法练习】CodeVs1391 伊吹萃香(分层图最短路)

    题意 在幻想乡,伊吹萃香是能够控制物体密度的鬼王.因为能够控制密度,所以萃香能够制造白洞和黑洞,并可以随时改变它们.某一天萃香闲着无聊,在妖怪之山上设置了一些白洞或黑洞,由于引力的影响,给妖怪们带来了 ...

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

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

  9. HDU 5669 Road(线段树建树)(分层图最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5669 [分析]线段树建树+分层图最短路 #include <cstdio> #includ ...

最新文章

  1. @2021高考生,用 Python 分析专业“钱景”
  2. mysql去除select换行符_MySQL中去除字段中的回车符和换行符
  3. kmalloc/kfree,vmalloc/vfree函数用法和区别
  4. 一文看懂边缘云在广电行业的应用
  5. hypermesh安装包百度云_HYPERMESH11.0 64bt软件
  6. 你(wo)不注意的和数据类型有关的小细节
  7. cadz轴归零命令_cadz轴归零(cad全部z轴归零)
  8. 二维向量叉乘的简单介绍及应用
  9. docker安装和入门教程
  10. 认识物联网系列——物联网架构
  11. 2023首届西安浐灞·保利戏剧节——以“觅”为主题 即将开启
  12. matlab安装遇到的问题
  13. 【html+css】
  14. 【Redis】Redis慢查询
  15. Python pandas把多个DataFrame对象写入Excel文件中同一个工作表
  16. 一文讲懂npm link
  17. 2020-11-29 漫谈email之smtp、pop3、spf dkim
  18. 自我介绍php一句话,面试自我介绍经典语句,经典一句话自我介绍
  19. ArcGIS利用draw绘图工具绘制shp文件
  20. 1-1 【理论】01-文件上传/下载漏洞的业务场

热门文章

  1. MongoDB复制集原理、搭建及复制集简单维护
  2. laytpl语法_laytpl--前端数据绑定
  3. Neo4j 任命方俊强为大中华区总经理
  4. windows下载redis、windows安装redis、windows启动redis
  5. el-upload 上传图片文件方法
  6. [创业之路-52] :动态股权机制 -7- 动态股权激励模型
  7. sizeof计算二维数组长度的问题
  8. c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作
  9. HNUST 1669 我的算法会不会Time Limit Exceeded
  10. R语言使用rnorm函数生成正太分布数据、使用barplot函数可视化柱状图