From 1766ef43cd559299496a3c4953b824abb10d7f62 Mon Sep 17 00:00:00 2001 From: ember <1279347317@qq.com> Date: Sun, 27 Jul 2025 12:44:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E7=AB=A0=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/post/算法题/nju01.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/post/算法题/nju01.md b/content/post/算法题/nju01.md index b693a7e..aad9c3c 100644 --- a/content/post/算法题/nju01.md +++ b/content/post/算法题/nju01.md @@ -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++ 代码