fork download
  1. # solution by https://w...content-available-to-author-only...n.com/in/eldan-abdrashim/
  2. # https://l...content-available-to-author-only...e.com/problems/all-paths-from-source-to-target/
  3.  
  4.  
  5. """
  6. Идея заключается в том чтобы рекурсивно бегать по массивом связей(граф), и добавлять их в буффер(path).
  7. Когда весь путь будет пройден (базовое условие из выхода рекурсии) тогда запишем все в массив результатов, почему .copy? потому что
  8. массивы в Python передаются по ссылке на память, значит при следующим обращении он будет меняться. Из за этого будем использовать
  9. легкое копирование(shallow copy .copy()) чтобы избежать ошибку.
  10.  
  11. Массив graph, это матрица смежности (связей) которая говорит кто и с кем связен.
  12. Как говорит? вот так: если 0 индекс хранит массив [1, 2], значит он (0 вершина) имеет путь от 0 -> 1 и 0 -> 2;
  13. Это связку можно называть графом связи, где 0, 1 и 2 это вершины графа, а их пути это массив путей (как в примере).
  14.  
  15.  
  16. Если не совсем ясна идея, то пишите
  17. telegram: @eldvn
  18. instagram: @eldvn1
  19. """
  20. class Solution:
  21.  
  22. def depth_search(self, node, graph, path, result):
  23. if node == len(graph) - 1:
  24. result.append(path.copy())
  25. return
  26.  
  27. for next_node in graph[node]:
  28. path.append(next_node)
  29. self.depth_search(next_node, graph, path, result)
  30. path.pop()
  31.  
  32. def allPathsSourceTarget(self, graph: list[list[int]]) -> list[list[int]]:
  33. result = []
  34. path = [0]
  35.  
  36. self.depth_search(0, graph, path, result)
  37.  
  38. return result
  39.  
  40.  
  41.  
Runtime error #stdin #stdout #stderr 0.17s 23668KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 20, in <module>
  File "./prog.py", line 32, in Solution
TypeError: 'type' object is not subscriptable