From 832e425ce6942a82115badb6d2286ec09690a5c5 Mon Sep 17 00:00:00 2001 From: "435962415@qq.com" Date: Sat, 2 Mar 2024 17:50:19 +0800 Subject: [PATCH] =?UTF-8?q?=C2=961971.=20=E5=AF=BB=E6=89=BE=E5=9B=BE?= =?UTF-8?q?=E4=B8=AD=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0go=E8=A7=A3=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1971.寻找图中是否存在路径.md | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/problems/1971.寻找图中是否存在路径.md b/problems/1971.寻找图中是否存在路径.md index 132b0181..89a2a1fe 100644 --- a/problems/1971.寻找图中是否存在路径.md +++ b/problems/1971.寻找图中是否存在路径.md @@ -284,6 +284,48 @@ var validPath = function(n, edges, source, destination) { }; ``` +### Go + +```go +func validPath(n int, edges [][]int, source int, destination int) bool { + n = 200005 + father := make([]int, n) + // 并查集初始化 + for i := 0; i < n; i++ { + father[i] = i + } + + var find func(u int) int // 并查集里寻根的过程 + find = func(u int) int { + // 如果根就是自己,直接返回 + // 如果根不是自己,就根据数组下标一层一层向下找 + if u == father[u] { + return u + } + return find(father[u]) + } + + var join func(u, v int) // 将 v->u 这条边加入并查集 + join = func(u, v int) { + u = find(u) + v = find(v) + if u == v { + return + } + father[v] = u + } + + for i := 0; i < len(edges); i++ { + join(edges[i][0], edges[i][1]) + } + + source = find(source) + destination = find(destination) + return source == destination +} + +``` +