AcWing 854. Floyd求最短路

本文介绍了如何使用Floyd-Warshall算法求解有向图中从一个点到另一个点的最短路径,包括算法原理、时间复杂度分析以及C++代码实现。针对给定的AcWing竞赛题目,展示了如何处理负权边和查询操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源AcWing 854. Floyd求最短路

一、题目描述

给定一个 n n n 个点 m m m 条边的有向图,图中可能存在重边和自环,边权可能为负数。

再给定 k k k 个询问,每个询问包含两个整数 x x x y y y,表示查询从点 x x x 到点 y y y 的最短距离,如果路径不存在,则输出 impossible

数据保证图中不存在负权回路。

输入格式
第一行包含三个整数 n , m , k n,m,k n,m,k

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

接下来 k k k 行,每行包含两个整数 x , y x,y x,y,表示询问点 x x x 到点