diff options
Diffstat (limited to 'all_path_src_target.cpp')
-rw-r--r-- | all_path_src_target.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/all_path_src_target.cpp b/all_path_src_target.cpp new file mode 100644 index 0000000..ae261aa --- /dev/null +++ b/all_path_src_target.cpp @@ -0,0 +1,30 @@ +#include "leetcode.h" + +class Solution { +public: + vvd(int) allPathsSourceTarget(vvd(int) & graph) { + vvd(int) ans; + vector<int> path; + dfs(graph, ans, path, 0); + return ans; + } + +private: + void dfs(vvd(int) & graph, vvd(int) & ans, vector<int> &path, int curr) { + path.push_back(curr); + if (curr == graph.size() - 1) + ans.push_back(path); + else + for (auto it : graph[curr]) + dfs(graph, ans, path, it); + path.pop_back(); + } +}; + +int main() { + Solution obj; + vvd(int) graph = {{1, 2}, {3}, {3}, {}}; + for (auto i : obj.allPathsSourceTarget(graph)) + for (auto j : i) + cout << j << ' '; +} |