题目地址:

https://www.acwing.com/problem/content/1131/

德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是它们并不是很擅长生产富含奶油的乳制品。农夫John此时身先士卒地承担起向德克萨斯运送大量的营养冰凉的牛奶的重任,以减轻德克萨斯人忍受酷暑的痛苦。John已经研究过可以把牛奶从威斯康星运送到德克萨斯州的路线。这些路线包括起始点和终点一共有TTT个城镇,为了方便标号为111到TTT。除了起点和终点外的每个城镇都由 双向道路 连向至少两个其它的城镇。每条道路有一个通过费用(包括油费,过路费等等)。给定一个地图,包含CCC条直接连接222个城镇的道路。每条道路由道路的起点RsR_sRs​,终点ReR_eRe​和花费CiC_iCi​组成。求从起始的城镇TsT_sTs​到终点的城镇TeT_eTe​最小的总费用。

输入格式:
第一行:444个由空格隔开的整数:T,C,Ts,TeT,C,T_s,T_eT,C,Ts​,Te​;第222到第C+1C+1C+1行:第i+1i+1i+1行描述第iii条道路,包含333个由空格隔开的整数:Rs,Re,CiR_s,R_e,C_iRs​,Re​,Ci​。

输出格式:
一个单独的整数表示从TsT_sTs​到TeT_eTe​的最小总费用。数据保证至少存在一条道路。

数据范围:
1≤T≤25001≤T≤25001≤T≤2500
1≤C≤62001≤C≤62001≤C≤6200
1≤Ts,Te,Rs,Re≤T1≤T_s,T_e,R_s,R_e≤T1≤Ts​,Te​,Rs​,Re​≤T
1≤Ci≤10001≤C_i≤10001≤Ci​≤1000

图是稀疏图,可以用堆优化版Dijkstra算法来做。参考https://blog.csdn.net/qq_46105170/article/details/113816744。代码如下:

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;typedef pair<int, int> PII;const int N = 2510;
int n, m;
int st, ed, dis[N];
bool vis[N];
// 邻接矩阵存图,可以防止被平行边卡
int g[N][N];int dijkstra() {priority_queue<PII, vector<PII>, greater<PII> > heap;heap.push({0, st});memset(dis, 0x3f, sizeof dis);    dis[st] = 0;while (heap.size()) {auto t = heap.top();heap.pop();int v = t.second, d = t.first;// 如果终点出堆了,那么最短路就找到了,直接返回之if (v == ed) return dis[v];// 出堆的元素的最短路已经找到了,标记之vis[v] = true;for (int i = 1; i <= n; i++) {if (!vis[i] && dis[i] > dis[v] + g[v][i]) {dis[i] = dis[v] + g[v][i];heap.push({dis[i], i});}}}return -1;
}int main() {cin >> n >> m;cin >> st >> ed;memset(g, 0x3f, sizeof g);for (int i = 0; i < m; i++) {int a, b, c;scanf("%d%d%d", &a, &b, &c);// 平行边只存最短的那条g[a][b] = g[b][a] = min(g[a][b], c);}cout << dijkstra() << endl;return 0;
}

时间复杂度O(Clog⁡T)O(C\log T)O(ClogT),空间O(T2+C)O(T^2+C)O(T2+C)。

也可以用SPFA来做。参考https://blog.csdn.net/qq_46105170/article/details/113821633。代码如下:

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;const int N = 2510;
int n, m;
int s, e, dis[N];
bool st[N];
int g[N][N];void spfa() {memset(dis, 0x3f, sizeof dis);dis[s] = 0;queue<int> q;q.push(s);while (q.size()) {int t = q.front();q.pop();st[t] = false;for (int i = 1; i <= n; i++) {if (dis[i] > dis[t] + g[t][i]) {dis[i] = dis[t] + g[t][i];if (!st[i]) {q.push(i);st[i] = true;}}}}
}int main() {cin >> n >> m;cin >> s >> e;memset(g, 0x3f, sizeof g);for (int i = 0; i < m; i++) {int a, b, c;scanf("%d%d%d", &a, &b, &c);g[a][b] = g[b][a] = min(g[a][b], c);}spfa();cout << dis[e] << endl;return 0;
}

时间复杂度O(CT)O(CT)O(CT)(但实际要比这个快很多),空间O(T2)O(T^2)O(T2)。

【ACWing】1129. 热浪相关推荐

  1. AcWing 1129 热浪

    题目描述: 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!! 他们的德克萨斯长角牛吃起来不错,可是它们并不是很擅长生产富含奶油的乳制品. 农夫John此时身先士卒地承担起向德克萨斯运送大量的营养冰 ...

  2. 算法提高课-图论-单源最短路的建图方式-AcWing 1129. 热浪:dijkstra裸题

    题目分析 来源:acwing 分析: ac代码 朴素的dijkstra() ,时间复杂度O(n2)O(n^2)O(n2) #include<bits/stdc++.h> using nam ...

  3. acwing 1129. 热浪(spfa)

    题目 热浪题目链接 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!! 他们的德克萨斯长角牛吃起来不错,可是它们并不是很擅长生产富含奶油的乳制品. 农夫John此时身先士卒地承担起向德克萨斯运送大量 ...

  4. 算法——AcWing算法提高课中代码和题解

    文章目录 第一章 动态规划 (完成情况:64/68) 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP 第二章 搜索 ...

  5. AcWing算法提高课

    1. 动态规划(43/68) 1.1 数字三角形模型(4/4) 1.1.1 AcWing 1015. 摘花生 结论: f[i][j]=max⁡(f[i−1][j],f[i][j−1])+w[i][j] ...

  6. 单/全源最短路的综合应用(未完待续...)

    目录 一.单源最短路 1.1 AcWing 1129. 热浪 1.2 AcWing 1128. 信使 1.3 AcWing 1127. 香甜的黄油 1.4 AcWing 1126. 最小花费 1.5 ...

  7. AcWing算法提高课 Level-3 第三章 图论

    单源最短路的建图方式 1129. 热浪 思路 :单源最短路算法中除了bellmanford一般不用以外,普D为O(n2)O(n^2)O(n2),优D为O(m∗logn)O(m*logn)O(m∗log ...

  8. 单源最短路的建图方式(Dijkstra)

    由于是复习,所以不会解释太多. 主要为Dijkstra的堆优化板子和朴素版(看数据范围) 再次看看时间复杂度[ n 为点数,m 为边数 ]:朴素版:O(),堆优化版:O( (n+m)logm ). 目 ...

  9. 第三章 图论【未完成】

    目录 单源最短路的建图方式 1129. 热浪[最普通的最短路板子] 1128. 信使[基本的最短路 + 稍微的扩展] 1127. 香甜的黄油[稍微变种的最短路] 1126. 最小花费[Dijkstra ...

最新文章

  1. [SCOI2005]栅栏(贪心+二分+dfs)难度⭐⭐⭐⭐
  2. Enterprise Library 2.0 Hands On Lab 翻译(12):安全应用程序块(一)
  3. python3 的 zip
  4. mybatis完整增删改查入门实例
  5. ettercap dns_spoof
  6. 欧美民用航空器 DO-178B标准
  7. 诗意的边缘(PHP顶级框架Zend Fr
  8. css中的@符号的用处
  9. vmware workstation14永久激活密钥分享
  10. python爬虫+谷歌翻译json字符串
  11. Cinema 4d 软件介绍
  12. LT8618SXB-HDMI发射器,运行功率小于100mA播放24bit 1080P内容,待机功率小于2mA
  13. elasticsearch操作索引库、RestClient操作索引库2
  14. Plot双y轴绘制常用代码
  15. 算法训练Day24 | 回溯算法理论基础;LeetCode77.组合(经典的回溯问题)
  16. 玩客云pc端_玩客云pc端
  17. Android Application Fundamentals——Android应用程序基础知识
  18. 网页版JS游戏五子棋单机版也可以改版成网络版
  19. 记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法
  20. CMD命令压缩和解压缩

热门文章

  1. Halcon图像修复
  2. 阿里云域名泛解析教程
  3. python深度学习--jena温度预测
  4. DTI处理工具包PANDA小白记录
  5. 飞书接入ChatGPT,打造属于自己的智能问答助手
  6. 校园跑腿小程序市场需要和功能分析!
  7. Python——round() 函数
  8. 跨平台移动开发工具:PhoneGap与Titanium全方位比拼
  9. linux运维工程师到底是做什么的?
  10. 【Books系列】之第三本书:《新物种爆炸》读书笔记