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

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;
    }
}
相关推荐
唯唯qwe-4 分钟前
Day21:贪心算法 | 加油站,分发糖果
算法·贪心算法
晚秋大魔王6 分钟前
C语言-宏的基础、进阶、高级、内置宏的用法
c语言·开发语言·
进阶的猪27 分钟前
stm32 GPIO输出-使用固件库点亮LED灯 Q&A
c语言·笔记·stm32·单片机
点云侠31 分钟前
粒子群优化算法求解三维变换矩阵的数学推导
线性代数·算法·矩阵
dragoooon3439 分钟前
[hot100 NO.31~36]
数据结构·算法·排序算法
白兰地空瓶39 分钟前
JavaScript 列表转树(List to Tree)详解:前端面试中如何从递归 O(n²) 优化到一次遍历 O(n)
javascript·算法·面试
艾醒42 分钟前
大模型原理剖析——从技术特性、底层架构到落地逻辑的全维度解析
算法
秦苒&1 小时前
【C语言】详解数据类型和变量(二):三种操作符(算数、赋值、单目)及printf
c语言·开发语言·c++·c#
无限进步_1 小时前
【C语言&数据结构】有效的括号:栈数据结构的经典应用
c语言·开发语言·数据结构·c++·git·github·visual studio
Liangwei Lin1 小时前
洛谷 B3637 最长上升子序列
算法