传送门

Luogu

解题思路

有点像这题,但是现在这道不能跑k遍SPFA了,会TLE。

那么我们就跑分层图最短路,然后就变成模板题了。

细节注意事项

  • 别跑SPFA就好了。

参考代码

  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <cctype>
  6. #include <cmath>
  7. #include <ctime>
  8. #include <queue>
  9. #define rg register
  10. using namespace std;
  11. template < class T > inline void read(T& s) {
  12. s = 0; int f = 0; char c = getchar();
  13. while (!isdigit(c)) f |= c == '-', c = getchar();
  14. while (isdigit(c)) s = s * 10 + c - 48, c = getchar();
  15. s = f ? -s : s;
  16. }
  17. typedef long long LL;
  18. const int _ = 210002;
  19. const int __ = 6100002;
  20. int tot, head[_], nxt[__], ver[__], w[__];
  21. inline void Add_edge(int u, int v, int d)
  22. { nxt[++tot] = head[u], head[u] = tot, ver[tot] = v, w[tot] = d; }
  23. int n, m, k, vis[_]; LL dis[_];
  24. inline int id(int u, int k) { return u + k * n; }
  25. inline void Dijkstra() {
  26. static priority_queue < pair < LL, int > > Q;
  27. memset(dis + 1, 0x3f, sizeof (LL) * (n * (k + 1)));
  28. dis[id(1, 0)] = 0, Q.push(make_pair(0, id(1, 0)));
  29. while (!Q.empty()) {
  30. int u = Q.top().second; Q.pop();
  31. if (vis[u]) continue; vis[u] = 1;
  32. for (rg int i = head[u]; i; i = nxt[i]) {
  33. int v = ver[i];
  34. if (dis[v] > dis[u] + w[i])
  35. dis[v] = dis[u] + w[i], Q.push(make_pair(-dis[v], v));
  36. }
  37. }
  38. }
  39. int main() {
  40. #ifndef ONLINE_JUDGE
  41. freopen("cpp.in", "r", stdin);
  42. freopen("cpp.out", "w", stdout);
  43. #endif
  44. read(n), read(m), read(k);
  45. for (rg int u, v, d; m--; ) {
  46. read(u), read(v), read(d);
  47. Add_edge(u, v, d), Add_edge(v, u, d);
  48. for (rg int i = 1; i <= k; ++i) {
  49. Add_edge(id(u, i), id(v, i), d);
  50. Add_edge(id(v, i), id(u, i), d);
  51. Add_edge(id(u, i - 1), id(v, i), 0);
  52. Add_edge(id(v, i - 1), id(u, i), 0);
  53. }
  54. }
  55. Dijkstra();
  56. LL ans = 1e18;
  57. for (rg int i = 0; i <= k; ++i)
  58. ans = min(ans, dis[id(n, i)]);
  59. printf("%lld\n", ans);
  60. return 0;
  61. }

完结撒花 \(qwq\)

「USACO09FEB」改造路Revamping Trails的更多相关文章

  1. P2939 [USACO09FEB]改造路Revamping Trails

    P2939 [USACO09FEB]改造路Revamping Trails 同bzoj2763.不过dbzoj太慢了,bzoj又交不了. 裸的分层图最短路. f[i][j]表示免费走了j条路到达i的最 ...

  2. 洛谷 P2939 [USACO09FEB]改造路Revamping Trails 题解

    P2939 [USACO09FEB]改造路Revamping Trails 题目描述 Farmer John dutifully checks on the cows every day. He tr ...

  3. [USACO09FEB] 改造路Revamping Trails | [JLOI2011] 飞行路线

    题目链接: 改造路 飞行路线 其实这两道题基本上是一样的,就是分层图的套路题. 为什么是分层图呢?首先,我们的选择次数比较少,可以把这几层的图建出来而不会爆空间.然后因为选择一个边权为0的路线之后我们 ...

  4. 洛谷P2939 [USACO09FEB]改造路Revamping Trails

    题意翻译 约翰一共有\(N\))个牧场.由\(M\)条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场\(1\)出发到牧场\(N\)去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰 ...

  5. 洛谷 P2939 [USACO09FEB]改造路Revamping Trails

    题意翻译 约翰一共有N)个牧场.由M条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场1出发到牧场N去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰打算升级其中K条小径,使之成为高 ...

  6. [USACO09FEB]改造路Revamping Trails

    题目描述 Farmer John dutifully checks on the cows every day. He traverses some of the M (1 <= M <= ...

  7. [USACO09FEB]改造路Revamping Trails 分层最短路 Dijkstra BZOJ 1579

    题意翻译 约翰一共有N)个牧场.由M条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场1出发到牧场N去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰打算升级其中K条小径,使之成为高 ...

  8. 洛谷P2939 [USACO09FEB]改造路Revamping Trails(最短路)

    题目描述 Farmer John dutifully checks on the cows every day. He traverses some of the M (1 <= M <= ...

  9. LUOGU P2939 [USACO09FEB]改造路Revamping Trails

    题意翻译 约翰一共有N)个牧场.由M条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场1出发到牧场N去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰打算升级其中K条小径,使之成为高 ...

随机推荐

  1. 使用URLConnection获取页面返回的xml数据

    public static void main(String[] args) throws Exception { String path="http://flash.weather.com ...

  2. WinForm开发(2)——DataGridView控件(2)——C# dataGridview控件,怎么获取行数

    dataGridView1.Rows.Count;//所有行数dataGridView1.RowCount;//可见行数

  3. Unity中调用Windows窗口选择文件

    1.OpenFileName数据接收类,如下: using UnityEngine; using System.Collections; using System; using System.Runt ...

  4. table 实现向下滑动首行冻结,向右滑动左列冻结

    <html> <head> <meta charset="utf-8"> <title>测试</title> <M ...

  5. [方法]季节调整与hp滤波方法

    进行时间序列的数据分析时,季节因素调整与hp滤波是进行数据处理与准备工作的常见必要环节.本文简要梳理季节调整与hp滤波的应用场景,以及在Python中的实现方法. 1. 季节调整方法 季节调整的目的是 ...

  6. Asteroids!_poj2225

    这是一个立方体的空间的路径搜索问题,若可达输出步数,不可达输出“NO ROUTE” 一道……课后题 输入的话我是按字符输入这个空间的 然后普通的bfs,一个方向数组,一个空间数组(因为只用一次,懒的再 ...

  7. T-SQL常用的函数

    http://blog.sina.com.cn/s/blog_4af01cd50100hsac.html

  8. Mysql按照字段的重复数排序

    select source_job_number,count(*) as count from v1_user WHERE source_id=3 group by source_job_number ...

  9. 吴裕雄--天生自然ORACLE数据库学习笔记:管理控制文件和日志文件

    alter database add logfile ('D:\OracleFiles\LogFiles\REDO4_A.LOG', 'E:\OracleFiles\LogFiles\REDO4_B. ...

  10. 夯实Java基础(二十四)——Java8新特征之Optional类

    1.概述 对于Java程序员来说,到目前为止出现次数最多的应该是NullpointException,它是导致Java应用程序失败的最常见原因.之前处理空指针我们必须先通过条件先去判断,然后再确认是否 ...