class Solution {
public:
vector<vector<int>>ans,mp;
vector<int>tmp;
void dfs(int cur,int n){
if(cur==n){
ans.push_back(tmp);
return;
}
for(int i=0;i<mp[cur].size();i++){
tmp.push_back(mp[cur][i]);
dfs(mp[cur][i],n);
tmp.pop_back();
}
}
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
mp.resize(25);
for(int i=0;i<graph.size();i++){
for(int j=0;j<graph[i].size();j++){
mp[i].push_back(graph[i][j]);
}
}
tmp.push_back(0);
dfs(0,graph.size()-1);
return ans;
}
};