洛谷:灾后重建

先看数据,显然很小,题目又要回答任意点到任意点的最短路,显然多源汇最短路问题义眼钉真Floyd

但询问卡死了… 5W一开始直接劝退,没什么很好的头绪。

结果此题只是一道简单的基于Floyd算法本质的签到题

蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡蔡

洛谷第一篇题解就很棒:(婴幼儿都能听懂Orz )
Time_Rune大佬

祖传代码 + 注释:

#include<bits/stdc++.h>
#include<unordered_set>
#include<unordered_map>
#define mem(a,b) memset(a,b,sizeof a)
#define cinios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define sca scanf
#define pri printf
#define ul u << 1
#define ur u << 1 | 1
//#pragma GCC optimize(2)
//[博客地址](https://blog.csdn.net/weixin_51797626?t=1)
using namespace std;typedef long long ll;
typedef pair<int, int> PII;const int N = 210, M = 50010, MM = 100010;
int INF = 0x3f3f3f3f, mod = 100003;
ll LNF = 0x3f3f3f3f3f3f3f3f;
int n, m, k, T, S;
int d[N][N];
int ht[N], top = 1;inline void floyd(int k) {for (int i = 1; i <= n; i++)//虽然最外层 k 是可以任意枚举,但内层是不能变的//必须枚举所有有可能的边,因为 k == 1 时,有可能有 1 到 n 的边//为了保证时间复杂度,这是必须要更新的,不可以for(1,k),会漏信息for (int j = 1; j <= n; j++)d[i][j] = min(d[i][j], d[i][k] + d[k][j]);//bug —— d[i][k], d[g][k] 加号写成逗号了,min没有{}容不下那么多变量//直接给我淦蒙了,完全没提示bug在哪,卡了半天// 只有这坨勾吧://error C2064: 项不会计算为接受 2 个参数的函数//message: 查看对正在编译的函数 模板 实例化“const _Ty & std::min<int, int>(const _Ty&, const _Ty&, _Pr) noexcept(<expr>)”的引用
}int main() {cinios;cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> ht[i];//ht是单调递增,出题人大恩大德for (int j = 1; j <= n; j++)if (i != j)d[i][j] = INF;}while (m--){int a, b, x;cin >> a >> b >> x;a++, b++;d[a][b] = d[b][a] = min(d[a][b], x);}cin >> T;while (T--) {int a, b, x;cin >> a >> b >> x; //数据保证 T 组 x 也单调递增a++, b++;//所以就不需要排序离线了//随着 x 更新点即可while (ht[top] <= x && top <= n)floyd(top++);//而对于当前时刻未修好的但被更新到了的村庄,进行一个简单判定即可if (ht[a] > x || ht[b] > x || d[a][b] == INF)cout << -1;else cout << d[a][b];cout << '\n';}return 0;
}```

P1119 灾后重建(基础Floyd原理的理解和运用)相关推荐

  1. P1119 灾后重建(经典floyd)

    https://www.luogu.org/problemnew/show/P1119 题目背景 BB地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前 ...

  2. P1119 灾后重建(floyd进阶)

    思路:这道题看n的范围很小(n<=200),显然就用floyd可以解决的问题,但又并不是简单的floyd算法,还是需要一些小小的变化.一开始我的思路是先跑一次弗洛伊德最短路,这样子显然复杂度很高 ...

  3. 洛谷P1119 灾后重建 图论 脑洞题

    洛谷P1119 灾后重建 图论   脑洞题   floyd    floyd中 k 的意义 通过前 k 个点 作为中间的节点 更新 i 到 j 的最短路 也就是 只经过前 k 个点 的最短路 帮助理解 ...

  4. 洛谷P1119 灾后重建[Floyd]

    题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...

  5. 洛谷P1119 灾后重建

    利用Floyd最外层为中转点的性质. #include <cstdio> #include <cstring> #include <iostream> #inclu ...

  6. [题解]洛谷P1119 灾后重建

    链接 做死我了,,,半夜找题自虐 floyd算法 #include<cstdio> #include<algorithm> #include<cstring> #i ...

  7. 洛谷——P1119 灾后重建

    https://www.luogu.org/problem/show?pid=1119 题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前, ...

  8. [洛谷P1119]灾后重建

    原题传送门 这道题是个好题,至少我第一下没有想到是一个古老的算法:$Floyd$ 第一眼知道是个最短路,然后就很果断的写了$dijkstra$,对于每组输入求一遍最短路,发现时间很困难.又该写了$SP ...

  9. 【Floyd】灾后重建(luogu 1119)

    灾后重建 luogu 1119 题目大意 给你一个图,每个点在一定时间后才能被通过,问在某个时间,两个点之间的最短路 输入样例 4 5 1 2 3 4 0 2 1 2 3 1 3 1 2 2 1 4 ...

最新文章

  1. Python进阶之递归函数的用法及其示例
  2. Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转)
  3. PHP异常处理类(文件上传提示)
  4. USART中的SART_IT_RXNE,USART_IT_TC,USART_IT_TXE
  5. C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
  6. 深入理解JVM虚拟机(八):编译器优化
  7. 交互原型细节提升之路
  8. setTimeout() 实现程序每隔一段时间自动执行
  9. Organization model change - product line item EC
  10. MFC窗口风格 WS_style/WS_EX_style
  11. 大学四年, 专业心得
  12. poj2942(双联通分量,交叉染色判二分图)
  13. 如何获取集合里面的下标_集合上下极限公式的理解
  14. JUnit5 @Tag注解示例
  15. Java生成真正格式的Excel文件
  16. Conditional Expectation Entropy
  17. 常用数据库高可用和分区解决方案(2) — MongoDB篇
  18. Linux驱动开发-编写OLED显示屏驱动
  19. 小米游戏本退出安全模式/win10安全模式密码
  20. linux 程序结构,Objective-C 基本的程序结构

热门文章

  1. python将横转为竖_如何将视频从横屏转为竖屏?
  2. 服务器如何释放虚拟内存,服务器如何释放虚拟内存
  3. 由“功夫熊猫”想到了“侠”
  4. MFC中添加一张图片作为对话框(或CFormView)的背景
  5. 微信公众平台微信支付打通流程
  6. 【Azure Data Platform】ETL工具(8)——ADF 数据集和链接服务
  7. UML--核心元素之参与者Actor
  8. java中用于定义小数的关键字_Java 中用于定义小数的关键字有两个:( ) 和 ( )。_学小易找答案...
  9. 这应该是最全面的MySQL知识点总结啦
  10. dedecms模板配置大概流程