
有向最小生成树(Directed MST)
问题描述
给定一个含 N 个顶点、M 条边的简单有向加权图,以及一个指定根节点 S(0≤S<N)。
要求构造一棵以 S 为根的有向最小生成树(Directed Minimum Spanning Tree, DMST),即:
- 包含所有 N 个顶点;
- 恰好 N−1 条边;
- 从根 S 到任意其他顶点有且仅有一条有向路径(即形成一棵以 S 为根的外向树);
- 总边权最小。
输出该树的总权重 X,以及每个非根顶点 i 的父节点 pi(即边 pi→i 属于树),其中规定 pS=S。
约束条件
- 1≤N≤2×105
- N−1≤M≤2×105
- 0≤S<N
- 0≤ai,bi<N
- ai=bi
- 0≤ci≤109
- 所有顶点均可从 S 到达
输入
N M S
a0 b0 c0
a1 b1 c1
:
aM−1 bM−1 cM−1
输出
X
p0 p1 ⋯ pN−1
4 4 0
0 1 10
0 2 10
0 3 3
3 2 4
17
0 0 3 0
7 8 3
3 1 10
1 2 1
2 0 1
0 1 1
2 6 10
6 4 1
4 5 1
5 6 1
24
2 3 1 3 6 4 2