当前位置: 首页 > news >正文

代码随想录训练营第55天|深度优先搜索

98. 所有可达路径

#include <iostream>
#include <vector>
#include <list>
using namespace std;vector<vector<int>> result; // 收集符合条件的路径
vector<int> path; // 1节点到终点的路径void dfs (const vector<vector<int>>& graph, int x, int n) {if (x == n) { // 找到符合条件的一条路径result.push_back(path);return;}for (int i : graph[x]) { // 找到 x指向的节点path.push_back(i); // 遍历到的节点加入到路径中来dfs(graph, i, n); // 进入下一层递归path.pop_back(); // 回溯,撤销本节点}
}int main() {int n, m, s, t;cin >> n >> m;vector<vector<int>> graph(n + 1); // 邻接表while (m--) {cin >> s >> t;// 使用邻接表 ,表示 s -> t 是相连的graph[s].push_back(t);}path.push_back(1); dfs(graph, 1, n); // 输出结果if (result.size() == 0) cout << -1 << endl;for (const vector<int> &pa : result) {for (int i = 0; i < pa.size() - 1; i++) {cout << pa[i] << " ";}cout << pa.back()  << endl;}
}

用邻接表存储图结构,搜索路径采用dfs,其实就是回溯模板。

原文地址:https://blog.csdn.net/jiyisuifeng1991/article/details/142758348
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mrgr.cn/news/45389.html

相关文章:

  • Go 性能剖析工具 pprof 与 Graphviz 教程
  • 鸿蒙开发之ArkUI 界面篇 二十一 人气卡片综合案例
  • 美国游戏产业的政府监管
  • AP8506 固定5V非隔离芯片5V/300MA SOP7
  • FreeRTOS学习笔记(更新中)
  • redux 2024 (2)react中使用redux
  • 一起发现CMake太美-08-开启CMake之旅-SimpleLogWithTest(上)
  • 光控资本:周几买国债逆回购周末是计算利息的呢?
  • pg数据库导入数据序列重复
  • 计算机毕业设计 | SpringBoot 房屋租赁网 租房买房卖房平台(附源码)
  • 音频进阶学习四——滤波器和线性时不变系统
  • 【python+requests】接口自动化测试
  • 浅谈专项测试之弱网络测试
  • tcpdump-arm平台移植
  • 软件测试之压力测试
  • 华媒舍:商务视频高效方法,帮助企业提高转化率
  • 自动识别json结构数据转换为建表SQL语句(Python 代码 示例数据来源于某眼查)
  • Java Web 开发
  • 外国钞票面值检测系统源码分享
  • 传统身份安全的局限性