Задача: Нахождение существующего пути
https://t.me/Golang_googleУсловие: дается ненаправленный граф, ребра которого представлены в массиве. Между каждой парой узлов в дереве имеется не более одного ребра.
Необходимо определить существует ли корректная дорога между узлом source и destination.
Пример:
Ввод: n = 3, edges = [[0,1],[1,2],[2,0]], source = 0, destination = 2
Вывод: true
Объяснение: *во вложении
Ввод: n = 6, edges = [[0,1],[0,2],[3,5],[5,4],[4,3]], source = 0, destination = 5
Вывод: false
Решение:
Go
func validPath(n int, edges [][]int, source int, destination int) bool {
res := make(map[int][]int)
for _, edge := range edges {
u := edge[0]
v := edge[1]
res[edge[0]] = append(res[edge[0]], v)
res[edge[1]] = append(res[edge[1]], u)
}
visited := make(map[int]bool)
queue := make([]int, 0)
queue = append(queue, source)
visited[source] = true
for len(queue) > 0 {
val := queue[0]
queue = queue[1:]
temp := res[val]
for i := 0; i < len(temp); i++ {
vct := temp[i]
if visited[vct] == false {
visited[vct] = true
queue = append(queue, vct)
}
}
if visited[destination] == true {
return true
}
}
return visited[destination]
}