当前位置:网站首页>洛谷 P1629 邮递员送信 (三种最短路)
洛谷 P1629 邮递员送信 (三种最短路)
2022-08-10 19:07:00 【eyuhaobanga】
题意容易理解,从1出发到其他所有点并返回的最短路,需要先正着跑一边,然后建反边再跑一边
Dijkstra:
#include <bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<n;i++) using namespace std; using LL = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<vector<pair<int, int>>> G(n + 1), G1(n + 1); vector<int> dist(n + 1, 0x3f3f3f3f), dist1(n + 1, 0x3f3f3f3f); rep (i, 0, m) { int u, v, c; cin >> u >> v >> c; G[u].push_back(make_pair(v, c)); G1[v].push_back(make_pair(u, c)); } LL ans = 0; dist[1] = 0; set<pair<int, int>> se, se1; for (int i = 1; i <= n; i++) { se.insert(make_pair(dist[i], i)); } while (!se.empty()) { int u = se.begin()->second; se.erase(se.begin()); if (dist[u] > 1 << 30) { break; } for (auto v : G[u]) { if (dist[u] + v.second < dist[v.first]) { se.erase(make_pair(dist[v.first], v.first)); dist[v.first] = dist[u] + v.second; se.insert(make_pair(dist[v.first], v.first)); } } } for (int i = 1; i <= n; i++) { ans += dist[i]; } dist1[1] = 0; for (int i = 1; i <= n; i++) { se1.insert(make_pair(dist1[i], i)); } while (!se1.empty()) { int u = se1.begin()->second; se1.erase(se1.begin()); if (dist1[u] > 1 << 30) { break; } for (auto v : G1[u]) { if (dist1[u] + v.second < dist1[v.first]) { se1.erase(make_pair(dist1[v.first], v.first)); dist1[v.first] = v.second + dist1[u]; se1.insert(make_pair(dist1[v.first], v.first)); } } } for (int i = 1; i <= n; i++) { ans += dist1[i]; } cout << ans << '\n'; return 0; }
bellman ford:
#include <bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<n;i++) using namespace std; using LL = long long; struct Edge { int x, y, v; }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<Edge> G(m + 1), G1(m + 1); for (int i = 1; i <= m; i++) { int u, v, c; cin >> u >> v >> c; G[i].x = u; G[i].y = v; G[i].v = c; G1[i].x = v; G1[i].y = u; G1[i].v = c; } vector<int> dist(n + 1, 0x3f3f3f3f); dist[1] = 0; while (true) { bool ok = false; for (int i = 1; i <= m; i++) { int x = G[i].x, y = G[i].y, w = G[i].v; if (dist[x] < 1 << 30) { if (dist[x] + w < dist[y]) { dist[y] = dist[x] + w; ok = true; } } } if (!ok) { break; } } vector<int> dist1(n + 1, 0x3f3f3f3f); dist1[1] = 0; while (true) { bool ok = false; for (int i = 1; i <= m; i++) { int x = G1[i].x, y = G1[i].y, w = G1[i].v; if (dist1[x] < 1 << 30) { if (dist1[x] + w < dist1[y]) { dist1[y] = w + dist1[x]; ok = true; } } } if (!ok) { break; } } LL ans = 0; for (int i = 2; i <= n; i++) { ans += dist1[i] + dist[i]; } cout << ans << '\n'; return 0; }
floyd (n>=1000慎用,该题吸氧可过):
#include <bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<n;i++) using namespace std; using LL = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<vector<int>> a(n + 1, vector<int> (n + 1, 0x3f3f3f3f)); rep (i, 0, m) { int u, v, c; cin >> u >> v >> c; a[u][v] = min(a[u][v], c); } for (int k = 1; k <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { a[i][j] = min(a[i][j], a[i][k] + a[k][j]); } } } LL ans = 0; for (int i = 2; i <= n; i++) { ans = ans + a[1][i] + a[i][1]; } cout << ans << '\n'; return 0; }
关于spfa,它已经死了,请不要在任何公共场合写spfa
边栏推荐
- 【CNN】刷SOTA的trick
- Common ports and services
- [Teach you how to do mini-games] How to lay out the hands of Dou Dizhu?See what the UP master of the 250,000 fan game area has to say
- servlet映射路径匹配解析
- mysql踩坑----case when then用法
- 服务器上行带宽和下行带宽指的是什么
- (十)图像数据的序列与反序列化
- 陕西CAS:1244028-50-9_Biotin-PEG3-SCO-PPh3 固体
- 「POJ 3666」Making the Grade 题解(两种做法)
- 越折腾越好用的 3 款开源 APP
猜你喜欢
【知识分享】在音视频开发领域中SEI到底是个啥?
spark学习笔记(九)——sparkSQL核心编程-DataFrame/DataSet/DF、DS、RDD三者之间的转换关系
越折腾越好用的 3 款开源 APP
Keras deep learning combat (17) - image segmentation using U-Net architecture
力扣18-四数之和——双指针法
【无标题】基于Huffman和LZ77的GZIP压缩
QoS Quality of Service Seven Switch Congestion Management
Tf铁蛋白颗粒包载顺铂/奥沙利铂/阿霉素/甲氨蝶呤MTX/紫杉醇PTX等药物
redis 事件
2020 ICPC Shanghai Site G
随机推荐
redis 事件
cordova 安装错误 Command failed: powershell 解决方法
redis如何查看key的有效期
leetcode 547.省份数量 并查集
西安Biotin-PEG8-IA_IA-PEG8-生物素供应商
[Go WebSocket] Your first Go WebSocket server: echo server
Modern Privacy-Preserving Record Linkage Techniques: An Overview论文总结
dumpsys meminfo 详解
The servlet mapping path matching resolution
【Knowledge Sharing】What is SEI in the field of audio and video development?
今日份bug,点击win10任务栏视窗动态壁纸消失的bug,暂未发现解决方法。
FEMRL: A Framework for Large-Scale Privacy-Preserving Linkage of Patients’ Electronic Health Rec论文总结
argparse——命令行参数解析
YOLOv3 SPP source analysis
【毕业设计】基于Stm32的智能疫情防控门禁系统 - 单片机 嵌入式 物联网
机器学习|模型评估——AUC
leetcode 85.最大矩形 单调栈应用
子域名收集&Google搜索引擎语法
赎金信问题答记
opengrok搭建[通俗易懂]