98. 所有可达路径
题目链接: 98. 所有可达路径
文章讲解: 代码随想录
输入输出格式:
头文件
#include <iostream>
cin>>x;(给x,所以是向着x的)
cout<< x;(x给别人,所以是向着out的)
深度搜索三部曲:
1.确定参数
2.确定终止条件
3.处理当前节点逻辑
cpp
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>>ans;
vector<int>path;
void dfs(vector<vector<int>>graph,int start,int end){
if(start==end){ //终止条件
ans.push_back(path);
return;
}
for(int i=1;i<=end;i++){
if(graph[start][i]==1){
path.push_back(i);
dfs(graph,i,end); //递归
path.pop_back(); //回溯
}
}
}
int main(){
int n,m,s,t;
cin>>n>>m;
vector<vector<int>>graph(n+1,vector<int>(n+1,0));
while(m--){
cin>>s>>t;
graph[s][t]=1;
}
path.push_back(1);
dfs(graph,1,n);
if (ans.size() == 0) cout << -1 << endl;
for(const vector<int> &p:ans){
for(int i=0;i<p.size()-1;i++){
cout<<p[i]<<' ';
}
cout<<p[p.size()-1]<<endl;
}
}