代码随想录算法训练营第五十天|图论part1

98. 所有可达路径

题目链接:98. 所有可达路径

文章讲解:代码随想录

输入输出格式:

头文件

#include

cin>>x;(给x,所以是向着x的)

cout<< x;(x给别人,所以是向着out的)

深度搜索三部曲:

1.确定参数

2.确定终止条件

3.处理当前节点逻辑

#include 
#include 
using namespace std;
vector>ans;
vectorpath;
void dfs(vector>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>graph(n+1,vector(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 &p:ans){
        for(int i=0;i

你可能感兴趣的:(算法,图论,c语言)