跳转至

两类最短路查询

预估时间限制:1 秒。内存限制:128 MB。

实际时限以标准程序在目标评测环境的最慢用例中位时间乘以 \(2\) ,按 \(0.5\) 秒向上取整。参考环境见评测说明。

背景故事

路线服务需要回答站点之间的最短路查询。有些网络很大,但只询问一次;其余网络的站点较少,可以提出许多查询。

(本故事由GPT-6重写)

形式化问题描述

给定有 \(n\) 个点、\(m\) 条非负权无向边的图,点编号为 \(1,\ldots,n\) .依次回答 \(q\) 次询问,每次给出两个点,求它们之间的最短路径权值,即边权之和的最小值。若不可达,输出 \(-1\) .

所有输入都满足 \(q=1\) 或 \(n\le500\) .允许重边、自环、零权边和重复询问。从一个点到自身可以不经过任何边,因此距离为零。

输入格式

第一行三个整数 \(n,m,q\) .接下来 \(m\) 行,每行三个整数 \(u,v,c\) ,表示 \(u,v\) 之间有一条权值为 \(c\) 的无向边。再接下来 \(q\) 行,每行两个整数 \(u,v\) ,表示一次询问。

输出格式

按输入顺序输出 \(q\) 行,每行给出一次询问的最短路径权值;不可达时输出 \(-1\) .

样例

样例 1

输入

4 4 4
1 2 9
1 2 2
2 3 4
1 3 10
1 3
3 1
1 4
4 4

输出

6
6
-1
0

样例 2

输入

4 3 1
1 2 1000000000
2 3 1000000000
3 4 1000000000
1 4

输出

3000000000

样例解释

第一组中,点 \(1,2\) 之间两条边可以选择权值为二的那条,再经过权值为四的边到达点 \(3\) ,得到距离六。无向图中的反向查询也为六。点 \(4\) 与其余点不连通,但它到自身的距离为零。

第二组只有一条连接点 \(1,4\) 的简单路径,权值之和为 \(3000000000\) .

数据范围与保证

对所有数据,\(1\le n,m,q\le5\times10^5\) ,\(1\le u,v\le n\) ,\(0\le c\le10^9\) ,并且 \(q=1\) 或 \(n\le500\) .图不保证连通。

分值比例 额外条件
30% \(q=1\)
40% \(q=1\) ,且 \(n\le500\)
30% \(n\le500\)