当前位置:   article > 正文

leetcode 797. 所有可能的路径(C++、java)_有向无环图 leetcode

有向无环图 leetcode

给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序

二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。

译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。

示例 1:

输入:graph = [[1,2],[3],[3],[]]
输出:[[0,1,3],[0,2,3]]
解释:有两条路径 0 -> 1 -> 3 和 0 -> 2 -> 3

示例 2:

输入:graph = [[4,3,1],[3,2,4],[3],[4],[]]
输出:[[0,4],[0,3,4],[0,1,3,4],[0,1,2,3,4],[0,1,4]]

示例 3:

输入:graph = [[1],[]]
输出:[[0,1]]

示例 4:

输入:graph = [[1,2,3],[2],[3],[]]
输出:[[0,1,2,3],[0,2,3],[0,3]]

示例 5:

输入:graph = [[1,3],[2],[3],[]]
输出:[[0,1,2,3],[0,3]]

提示:

  • n == graph.length
  • 2 <= n <= 15
  • 0 <= graph[i][j] < n
  • graph[i][j] != i(即,不存在自环)
  • graph[i] 中的所有元素 互不相同
  • 保证输入为 有向无环图(DAG)

C++

  1. class Solution {
  2. public:
  3. void dfs(vector <vector<int>> &res, vector<int> &tmp, int k) {
  4. if (k == graph.size() - 1) {
  5. res.push_back(tmp);
  6. return;
  7. }
  8. vector<int> vec = graph[k];
  9. for (int i = 0; i < vec.size(); i++) {
  10. tmp.push_back(vec[i]);
  11. dfs(res, tmp, vec[i]);
  12. tmp.pop_back();
  13. }
  14. }
  15. vector <vector<int>> allPathsSourceTarget(vector <vector<int>> &graph) {
  16. this->graph = graph;
  17. vector <vector<int>> res;
  18. vector<int> tmp;
  19. tmp.push_back(0);
  20. dfs(res, tmp, 0);
  21. return res;
  22. }
  23. private:
  24. vector <vector<int>> graph;
  25. };

java

  1. class Solution {
  2. List<List<Integer>> res = new ArrayList<>();
  3. int[][] g;
  4. int n;
  5. List<Integer> tmp = new ArrayList<>();
  6. public void dfs(int k) {
  7. if (k == n - 1) {
  8. res.add(new ArrayList<>(tmp));
  9. return;
  10. }
  11. int[] vec = g[k];
  12. for (int i = 0; i < vec.length; i++) {
  13. tmp.add(vec[i]);
  14. dfs(vec[i]);
  15. tmp.remove(tmp.size() - 1);
  16. }
  17. }
  18. public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
  19. g = graph;
  20. n = graph.length;
  21. tmp.add(0);
  22. dfs(0);
  23. return res;
  24. }
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/558000
推荐阅读
相关标签
  

闽ICP备14008679号