原题链接:Leetcode 797. 所有可能的路径
class Solution {
public:
vector<vector<int>> res;
void dfs(vector<vector<int>>& g,int x,vector<int>& tmp)
{
if(x==0)
{
vector<int> r(tmp);
reverse(r.begin(),r.end());
res.push_back(r);
}
for(auto num:g[x])
{
tmp.push_back(num);
dfs(g,num,tmp);
tmp.pop_back();
}
}
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
int n=graph.size();
vector<vector<int>> g(n);
for(int i=0;i<n;i++)
{
for(auto x:graph[i]) g[x].push_back(i);
}
vector<int> tmp;
tmp.push_back(n-1);
dfs(g,n-1,tmp);
return res;
}
};
class Solution {
public:
vector<vector<int>> res;
vector<int> tmp;
void dfs(vector<vector<int>>& graph,int x,int n)
{
if(x==n) res.push_back(tmp);
for(auto num:graph[x])
{
tmp.push_back(num);
dfs(graph,num,n);
tmp.pop_back();
}
}
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
int n=graph.size();
tmp.push_back(0);
dfs(graph,0,n-1);
return res;
}
};