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

题解:AcWing 854 Floyd求最短路

【题目来源】

AcWing:854. Floyd求最短路 - AcWing题库

【题目描述】

给定一个\(n\)个点\(m\)条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定\(k\) 个询问,每个询问包含两个整数\(x\)\(y\),表示查询从点\(x\)到点\(y\)的最短距离,如果路径不存在,则输出 impossible。数据保证图中不存在负权回路。

【输入】

第一行包含三个整数 \(n, m,k\)。接下来\(m\)行,每行包含三个整数\(x,y,z\),表示存在一条从点\(x\) 到点\(y\)的有向边,边长为\(z\)

接下来\(k\)行,每行包含两个整数\(x,y\),表示询问点\(x\)到点\(y\)的最短距离。

【输出】

\(k\) 行,每行输出一个整数,表示询问的结果,若询问两点间不存在路径,则输出impossible。

【输入样例】

3 3 2
1 2 1
2 3 2
1 3 1
2 1
1 3

【输出样例】

impossible
1

【算法标签】

《AcWing 854 Floyd求最短路》 #最短路# #Floyd#

【代码详解】

#include <bits/stdc++.h>  // 包含所有标准库头文件
using namespace std;const int N = 210, INF = 1e9;  // 定义常量N为210,INF为一个很大的数(表示无穷大)
int dist[N][N];  // 定义一个二维数组dist,用于存储任意两点之间的最短距离
int n, m, q;  // n表示图中节点的数量,m表示边的数量,q表示查询的数量// Floyd-Warshall算法实现
void floyd()
{// 三重循环,k是中间节点,i是起点,j是终点for (int k = 1; k <= n; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)// 更新i到j的最短距离,考虑通过k节点的情况dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
}int main()
{// 输入节点数n,边数m,查询数qcin >> n >> m >> q;// 初始化dist数组for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (i == j) dist[i][j] = 0;  // 节点到自身的距离为0else dist[i][j] = INF;  // 其他节点之间的距离初始化为无穷大// 输入m条边,并更新dist数组while (m--) {int a, b, c;cin >> a >> b >> c;  // 输入边的起点a,终点b,权重cdist[a][b] = min(dist[a][b], c);  // 更新a到b的最短距离,保留最小的权重}// 调用Floyd-Warshall算法计算所有节点对之间的最短路径floyd();// 处理q个查询while (q--) {int a, b;cin >> a >> b;  // 输入查询的起点a和终点bint ans = dist[a][b];  // 获取a到b的最短距离// 如果最短距离大于等于INF/2,说明a和b之间没有路径(或路径不可达)if (ans >= INF / 2) cout << "impossible" << endl;  // 输出"impossible"else cout << ans << endl;  // 否则输出最短距离}return 0;  // 程序结束
}

【运行结果】

3 3 2
1 2 1
2 3 2
1 3 1
2 1
imposssible
1 3
1
http://www.jsqmd.com/news/399360/

相关文章:

  • TVP-FAVAR模型解读
  • 机器学习入门:用 Python 实现简单分类模型完整流程
  • AI元人文:在技术加速时代守护意义生态
  • 【Kafka基础篇】面试高频题:Rebalance触发条件、执行阶段,一篇讲透不踩坑
  • 题解:AcWing 859 Kruskal算法求最小生成树
  • 2026.2.21:微调vgg16模型训练CIFAR-10,准确率达0.9034
  • 【Kafka基础篇】Kafka高可用核心:ISR机制与ACK策略详解,吃透可靠性与吞吐量权衡
  • 0221 重听收藏的歌
  • 搭建环境的流程——以多有米为例
  • 题解:AcWing 858 Prim算法求最小生成树
  • 题解:AcWing 852 spfa判断负环
  • 题解:AcWing 851 spfa求最短路
  • 智能指针(三):实现篇 —— shared_ptr 的内部设计与引用计数机制
  • 智能指针(二):机制篇 —— 移动语义与所有权转移
  • 【单片机】vscode环境配置
  • 智能指针(四):体系篇 —— 现代 C++ 内存管理全景图
  • 桌面整理 Desk Tidy
  • 使用 Python + Tkinter 打造“猫狗大战“回合制策略游戏
  • 瑞祥商联卡回收,闲置卡券如何变身“隐形钱包”? - 京顺回收
  • deepspeed训练框架
  • 智能家居AI模型服务化:架构设计最佳实践
  • 《信号与系统》欧拉公式的几何意义与物理学意义:不只是数学,更是宇宙的旋转密码
  • 轴承故障诊断是工业设备监测的重要方向,今天咱们用MATLAB搞个玩具级别的轴承动力学模型。先甩开复杂的数学推导,直接上手写点能跑起来的代码
  • 如何将集体好奇心转化为商业价值
  • [macbookpro] macbook pro m4 关闭开盖就开机的问题
  • 【egui】[特殊字符] 窗口配置小抄:eframe::NativeOptions
  • 从零搭建JumpServer
  • 大数据领域 HBase 的安全机制解析
  • Python全能框架Feapder,四种模式应对复杂场景
  • 大数据领域数据科学的图像识别应用