当前位置: 首页 > news >正文

最短路 - # P1119 灾后重建

题目背景

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

题目描述

给出 B 地区的村庄数 \(N\),村庄编号从 \(0\)\(N-1\),和所有 \(M\) 条公路的长度,公路是双向的。并给出第 \(i\) 个村庄重建完成的时间 \(t_i\),你可以认为是同时开始重建并在第 \(t_i\) 天重建完成,并且在当天即可通车。若 \(t_i\)\(0\) 则说明地震未对此地区造成损坏,一开始就可以通车。之后有 \(Q\) 个询问 \((x,y,t)\),对于每个询问你要回答在第 \(t\) 天,从村庄 \(x\) 到村庄 \(y\) 的最短路径长度为多少。如果无法找到从 \(x\) 村庄到 \(y\) 村庄的路径,经过若干个已重建完成的村庄,或者村庄 \(x\) 或村庄 \(y\) 在第 \(t\) 天仍未重建完成,则需要输出 \(-1\)

输入格式

第一行包含两个正整数 \(N,M\),表示了村庄的数目与公路的数量。

第二行包含 \(N\) 个非负整数 \(t_0,t_1,\cdots,t_{N-1}\),表示了每个村庄重建完成的时间,数据保证了 \(t_0 \le t_1 \le \cdots \le t_{N-1}\)

接下来 \(M\) 行,每行 \(3\) 个非负整数 \(i,j,w\)\(w\) 不超过 \(10000\),表示了有一条连接村庄 \(i\) 与村庄 \(j\) 的道路,长度为 \(w\),保证 \(i\neq j\),且对于任意一对村庄只会存在一条道路。

接下来一行也就是 \(M+3\) 行包含一个正整数 \(Q\),表示 \(Q\) 个询问。

接下来 \(Q\) 行,每行 \(3\) 个非负整数 \(x,y,t\),询问在第 \(t\) 天,从村庄 \(x\) 到村庄 \(y\) 的最短路径长度为多少,数据保证了 \(t\) 是不下降的。

输出格式

\(Q\) 行,对每一个询问 \((x,y,t)\) 输出对应的答案,即在第 \(t\) 天,从村庄 \(x\) 到村庄 \(y\) 的最短路径长度为多少。如果在第 \(t\) 天无法找到从 \(x\) 村庄到 \(y\) 村庄的路径,经过若干个已重建完成的村庄,或者村庄 \(x\) 或村庄 \(y\) 在第 \(t\) 天仍未修复完成,则输出 \(-1\)

输入输出样例 #1

输入 #1

4 5
1 2 3 4
0 2 1
2 3 1
3 1 2
2 1 4
0 3 5
4
2 0 2
0 1 2
0 1 3
0 1 4

输出 #1

-1
-1
5
4

说明/提示

  • 对于 \(30\%\) 的数据,有 \(N\le 50\)
  • 对于 \(30\%\) 的数据,有 \(t_i=0\),其中有 \(20\%\) 的数据有 \(t_i=0\)\(N>50\)
  • 对于 \(50\%\) 的数据,有 \(Q\le 100\)
  • 对于 \(100\%\) 的数据,有 \(1\le N\le 200\)\(0\le M\le \dfrac{N\times(N-1)}{2}\)\(1\le Q\le 50000\),所有输入数据涉及整数均不超过 \(10^5\)
#include <bits/stdc++.h>
using namespace std;const int maxn = 204;
const int INF = 0x3f3f3f3f;int n, m, q;
int t[maxn];
int dist[maxn][maxn];int main() {cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> t[i];}memset(dist, 0x3f, sizeof(dist));for (int i = 1; i <= m; i++) {int x, y, z;cin >> x >> y >> z;dist[x + 1][y + 1] = dist[y + 1][x + 1] = z;}cin >> q;int k = 1;while (q--) {int x, y, t1;cin >> x >> y >> t1;while (k <= n && t[k] <= t1) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);}}k++;}if (dist[x + 1][y + 1] == INF || x + 1 >= k || y + 1 >= k) {cout << "-1" << endl;} else {cout << dist[x + 1][y + 1] << endl;}}return 0;
}
http://www.jsqmd.com/news/429354/

相关文章:

  • 高光谱成像(一)高光谱图像
  • AC自动机、回文自动机、后缀自动机学习笔记
  • Block宣布裁员超4000人,全面押注AI技术
  • 2026年3月不锈钢电动门厂家推荐:防腐防锈与使用寿命深度对比 - 品牌鉴赏师
  • CoreWeave财报亮点与挑战并存 大举投资AI基础设施
  • 最短路 - # P6175 无向图的最小环问题
  • 毅力号火星车刷新火星自主驾驶纪录
  • 介词
  • AI在数学考试中的表现超越了科学家出题速度
  • MySQL 函数
  • Circle公司Q4业绩强劲股价飙升35%以上
  • Golang 企业级物联网平台 SagooIOT 实战指南
  • Galaxy S26系列发布:AI功能全面升级但价格上涨
  • 组合数学小记
  • LingFrame(灵珑)- JVM 运行时安全治理解决方案
  • 最短路 - # P3371 【模板】单源最短路径(弱化版)
  • 2026年蛋白粉哪个品牌最好最安全:口碑实力排名盘点(选购防坑指南) - 品牌排行榜
  • Android新应用帮助用户检测附近的Meta智能眼镜
  • 微软掌门人萨提亚·纳德拉:泡沫的反面是慕尼黑消防局
  • 最短路 - # P4779 【模板】单源最短路径(标准版)
  • 基于Nginx、Java、NFS实现动静分离的前后端分离架构
  • SimpleMindMap 私有部署后cpolar实现远程协作,实用超丝滑。
  • 联合利华任命前员工担任CIO职位负责核心IT运营
  • 【GitHub项目推荐--WiFi DensePose:基于WiFi CSI的隐私保护人体姿态估计系统】⭐⭐⭐⭐⭐
  • 预训练视觉模型赋能强化学习:基于VPT微调在开放世界任务中的样本效率与性能增益分析
  • 【车间调度】基于matlab模拟退火算法考虑在料品和成品库存受资源约束和截止日期影响的无关并行机调度问题UPMSP【含Matlab源码 15099期】
  • MyBatis-Plus的ActiveRecord 模式
  • 【优化配置】基于matlab遗传算法GA配置配电网络IEEE33和69总线【含Matlab源码 15100期】
  • 2026最火Skills技术向入门:分清与Agent的区别,Skills大爆发!掌握这4点,让你的技术工作效率飙升100倍!
  • LLM 算法岗 | 字节面试高频 leetcode 算法题汇总,附 leetcode 链接