/ Vijos / 题库 /

最短路径树

最短路径树

时间限制:1秒  内存限制:256M


【题目描述】

  给定一个无向图,有 \(n\) 个点和 \(m\) 条边。现在给你一个起点 \(s\),请你求出一棵生成树,这棵树以 \(s\) 为树根,令 \(s\) 到 \(i\) 的最短路长度为 \(a\),在生成树中 \(s\) 到 \(i\) 的简单路径长度为 \(b\),你需要保证对于任意的 \(i\),都有 \(a=b\)。

  最短路径树可能不唯一,你需要在最短路径树的基础上,保证所有你选中的边的总边权和最小,输出这个边权和。

【输入格式】

  第一行三个正整数 \(n,m,s\),如题目描述所说。
  接下来 \(m\) 行,每行三个正整数 \(u,v,w\),表示 \(u\) 与 \(v\) 之间存在一条长度为 \(w\) 的无向边。

【输出格式】

  输出一行,一个整数表示总边权和最小的最短路径树。

【输入输出样例】

 Input

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

 Output

3

【输入输出样例解释】

  注意到我们可以选择边为 1−2 与 1−3 的最短路径树,此时总边权和是 3+2=5。但是如果我们选择 1−3 与 2−3 这两条边,虽然也是最短路径树,但是总边权和是 2+1=3,显然更小,所以我们选择后者。

【数据限制】

  对于 \(100\%\) 的数据,\(n⩽2×10^5,m⩽min{2n(n−1),5×10^5}\),我们保证这个图没有重边没有自环且连通。\(1⩽u,v,s⩽n,1⩽w⩽10^9\)。

【来源】

  Mr.he

信息

ID
3100
难度
9
分类
图结构 | 最短路 点击显示
标签
(无)
递交数
1
已通过
1
通过率
100%
被复制
1
上传者