–1971. 寻找图中是否存在路径 添加go解法

This commit is contained in:
435962415@qq.com
2024-03-02 17:50:19 +08:00
parent 3bc9d8eb56
commit 832e425ce6

View File

@ -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
}
```
<p align="center">
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>