修改文章内容
This commit is contained in:
parent
4bed00e38a
commit
1766ef43cd
@ -69,10 +69,10 @@ math: true
|
||||
|
||||
1. 首先,我们使用并查集的 `find` 操作检查 `s` 和 `t` 是否在同一个连通分量中。
|
||||
- 如果 `find(s) == find(t)`,说明它们在同一个免费交通网络内,可以直接到达,费用为 0。
|
||||
2. 如果它们不在同一个连通分量中,费用就来自于在圆弧上从一个连通分量“跳”到另一个连通分量的次数。这可以转化为一个在**“分量图”**上的最短路问题。
|
||||
- **构建分量图**:图中的每个节点代表一个连通分量。
|
||||
- **分量图的边**:如果圆弧上相邻的两个点 `i` 和 `i+1` 属于不同的连通分量(即 `find(i) != find(i+1)`),我们就在这两个分量对应的节点之间连一条边,权重为 1。
|
||||
- **求解**:问题就变成了,在分量图上,从 `s` 所在的分量走到 `t` 所在的分量,最少需要经过几条边。这是一个典型的无权图最短路问题,可以使用**广度优先搜索 (BFS)** 来解决。
|
||||
2. 如果它们不在同一个连通分量中,费用就来自于在圆弧上从一个连通分量“跳”到另一个连通分量的次数。这可以转化为一个在 **“分量图”** 上的最短路问题。
|
||||
- 图中的每个节点代表一个连通分量。
|
||||
- 如果圆弧上相邻的两个点 `i` 和 `i+1` 属于不同的连通分量(即 `find(i) != find(i+1)`),我们就在这两个分量对应的节点之间连一条边,权重为 1。
|
||||
- 问题就变成了,在分量图上,从 `s` 所在的分量走到 `t` 所在的分量,最少需要经过几条边。这是一个典型的无权图最短路问题,可以使用**BFS** 来解决。
|
||||
|
||||
# C++ 代码
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user