Задача: Нахождение существующего пути

Задача: Нахождение существующего пути

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]
}





Report Page