题目描述

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

Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多k种航线上搭乘飞机。那么Alice和Bob这次出行最少花费多少?

输入输出格式
输入格式:

数据的第一行有三个整数,n,m,k,分别表示城市数,航线数和免费乘坐次数。
第二行有两个整数,s,t,分别表示他们出行的起点城市编号和终点城市编号。
接下来有m行,每行三个整数,a,b,c,表示存在一种航线,能从城市a到达城市b,或从城市b到达城市a,价格为c。

输出格式:

只有一行,包含一个整数,为最少花费。

输入输出样例
输入样例#1:
5 6 1
0 4
0 1 5
1 2 5
2 3 5
3 4 5
2 3 3
0 2 100

输出样例#1:

8

题解

简单的最短路+dp 我竟然没有一遍切
dp[i][j]表示到编号为i时,用了j次免费机会的最少花费

转移十分显然

Code

#include<bits/stdc++.h>
#define LL long long
#define RG register
using namespace std;inline int gi() {int f = 1, s = 0;char c = getchar();while (c != '-' && (c < '0' || c > '9')) c = getchar();if (c == '-') f = -1, c = getchar();while (c >= '0' && c <= '9') s = s*10+c-'0', c = getchar();return f == 1 ? s : -s;
}const int N = 10010, M = 50010;struct node {int to, next, w;
}g[M<<1];
int last[N], gl;
inline void add(int z, int y, int x) {g[++gl] = (node) {y, last[x], z};last[x] = gl;g[++gl] = (node) {x, last[y], z};last[y] = gl;return ;
}queue<int> q;
int f[N][15];
bool vis[N];
int main() {int n = gi(), m = gi(), k = gi(), s = gi(), t = gi();for (int i = 1; i <= m; i++) add(gi(), gi(), gi());q.push(s);memset(f, 127/3, sizeof(f));f[s][0] = 0;while (!q.empty()) {int u = q.front();q.pop();for (int i = last[u]; i; i = g[i].next) {int v = g[i].to;for (int j = 0; j <= k; j++) {if (j > 0 && f[v][j] > f[u][j-1]) {f[v][j] = f[u][j-1];if (!vis[v]) q.push(v), vis[v] = 1;}if (f[u][j] + g[i].w < f[v][j]) {f[v][j] = f[u][j] + g[i].w;if (!vis[v]) q.push(v), vis[v] = 1;}}}vis[u] = 0;}int ans = 2147483647;for (int i = 0; i <= k; i++)ans = min(ans, f[t][i]);printf("%d\n", ans);return 0;
}

转载于:https://www.cnblogs.com/zzy2005/p/9843042.html

洛谷 P4568 [JLOI2011]飞行路线相关推荐

  1. 洛谷P4568 [JLOI2011] 飞行路线 题解

    洛谷P4568 [JLOI2011] 飞行路线 题解 题目链接:P4568 [JLOI2011] 飞行路线 题意: Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公 ...

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

    [JLOI2011] 飞行路线 题目描述 Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在 n n n 个城市设有业务,设这些城市分别标记为 0 0 0 到 ...

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

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

  4. 洛谷 4568 [JLOI2011] 飞行路线

    题目戳这里 一句话题意: 有n个点,m条边的有向图,最多可以把k条边变为0,求从起点到终点最短距离. Solution 首先看到这题目,感觉贼难,看起来像DP,貌似也有大佬这么做,但鉴于本蒟蒻思维能力 ...

  5. P4568 [JLOI2011]飞行路线

    P4568 [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1 ...

  6. 洛谷P4568 飞行路线 最短路k条免费

    题目链接:https://www.luogu.org/problem/P4568 不管是k条免费还是半价都可以做~~~ 两种方法: 1.分层建图(但这种方法建图复杂度有点大) 就是几条免费建层图,每一 ...

  7. P4568 [JLOI2011]飞行路线 P2939 [USACO09FEB]改造路Revamping Trails

    分层图最短路系列题目 分层图最短路的题目有一个非常容易看得出的把戏:让k条边免费. 对于能让\(k\)条边免费的数据,我们开\(k+1\)层图.每一层图内部正常连点,不同的是前一层的图的起点连一条权值 ...

  8. 最短路分层图专题 洛谷P2939,4822,4568

    2020.6.3 今天主要练习了下分层图.看洛谷题解每次都能有新收获.今天本来想练dp,后来感觉可能会太自闭了,不如先来一发最短路,毕竟看家本领不能忘.然后点进了北京某年wc的一道题,让求1-n的最短 ...

  9. JLOI2011 飞行路线

    洛谷 BZOJ 分析 经典的分层最短路题(我不会). 建 \(k+1\) 层图,跑一遍最短路,找到 \(dis[i]\) 最小的一个. 代码 #include <queue> #inclu ...

  10. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

最新文章

  1. HTML meta标签总结
  2. matlab 求x y关系,怎么用MATLAB建立数据间的函数关系
  3. Android --- 如何使状态栏和标题栏底色相同
  4. 汇编语言实验 3 编程、编译、连接、跟踪
  5. 关于@@IDENTITY、SCOPE_IDENTITY ()、IDENT_CURRENT ('tableName')
  6. (单元测试)JavaBeans的技巧
  7. NOIP模拟测试22「位运算」
  8. js数组去重的4个方法
  9. 张家口zec挖矿软件哪里下载_电脑小白去哪里下载正规软件?
  10. Exchange+SP2的安装
  11. JS不能向WASM传递数组?
  12. ApexPages.StandardSetController基本用处
  13. C++虚函数(多态性)
  14. linux有类似酷狗qq音乐软件,除了网易云QQ音乐,这些小众音乐APP同样值得推荐。...
  15. ETF基金定投策略回测分析
  16. woj 1575 - Signal generators 单调队列优化dp + 瞎搞
  17. 浏览器被劫持怎么解决?关于浏览器被劫持主页的处理方法
  18. 微信小游戏 - Canvas/WebGL Demo 移植
  19. 《未来简史》的“数据主义”——企业运作就是一套数据算法!
  20. 英语基础太差,到底能不能学好编程?

热门文章

  1. 你使用过哪些数据分析的方法?
  2. selenium03-三个简单的web自动化实例
  3. 6.性能测试监控工具
  4. ubantu删除文件(夹)
  5. GPS模块坐标偏差很大?
  6. MongoDB的江湖传说
  7. vs2005打点不提示
  8. System76 是如何打造开源硬件的
  9. Py之pandas:dataframe学习【转载】
  10. 1996: [Hnoi2010]chorus 合唱队