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

卡码网KamaCoder 98. 所有可达路径

题目来源:https://kamacoder.com/problempage.php?pid=1170

C++题解1:深度优先搜索,邻接矩阵

#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> result;
vector<int> path;void dfs(const vector<vector<int>>& graph, int x, int N){path.push_back(x);if(x == N) result.push_back(path); else {for(int i = 1; i <= N; i++) {if(graph[x][i] == 1) dfs(graph, i, N);}}path.pop_back();return;}int main() {     // 输入int N, M;cin >> N >> M;vector<vector<int>> graph(N+1, vector<int>(N+1, 0));for (int i = 0; i < M; i++) {int a, b;cin >> a >> b;// 使用邻接矩阵 表示无线图,1 表示 s 与 t 是相连的graph[a][b] = 1;}// 处理 从起点1开始dfs(graph, 1, N);// 输出int length = result.size();if(length == 0) {cout<<-1;return 0;}for(int k = 0; k < length; k++) {for(int m = 0; m < result[k].size(); m++){cout<<result[k][m];if(m == result[k].size()-1) cout<<endl;else cout<<" ";}}return 0;
}

C++题解2:深度优先搜索,邻接表

#include <iostream>
#include <vector>
#include <list>
using namespace std;
vector<vector<int>> result;
vector<int> path;void dfs(const vector<list<int>>& graph, int x, int N){path.push_back(x);if(x == N) result.push_back(path);else {int mm = graph[x].size();// 注意list的迭代方式for(auto i:graph[x]) dfs(graph, i, N);}path.pop_back();return;     
}int main() {     // 输入int N, M;cin >> N >> M;vector<list<int>> graph(N+1);for (int i = 0; i < M; i++) {int a, b;// 使用邻接表 ,表示 a -> b 是相连的cin >> a >> b;graph[a].push_back(b);}// 处理dfs(graph, 1, N);// 输出int length = result.size();if(length == 0) {cout<<-1;return 0;}for(int k = 0; k < length; k++) {for(int m = 0; m < result[k].size(); m++){cout<<result[k][m];if(m == result[k].size()-1) cout<<endl;else cout<<" ";}}return 0;
}

相关文章:

  • 【STM32-新建工程-CubeMX】
  • 如何自制一个Spring Boot Starter并推送到远端公服
  • 【ARMv8/ARMv9 硬件加速系列 2.2 -- ARM NEON 的加减乘除(左移右移)运算】
  • 新手教学系列——“笑看”单元测试(pytest)
  • 【人工智能】—XGBoost算法在构建互联网防火墙异常行为识别模型应用案例
  • AcWing 1801:蹄子剪刀布 ← 模拟题
  • 「51媒体」活动会议,展览展会,直播曝光的一种方法
  • Eclipse 工作空间:深入解析与高效使用
  • rk3568 Android 11在系统怎样执行命令获取SN号
  • C语言入门系列:特殊的main函数和exit函数
  • pandas plot函数:数据可视化的快捷通道
  • 【java】写一个发送邮箱的样例
  • 点击旋转箭头样式
  • Java宝藏实验资源库(2)字节流
  • ios CCLanguage.m
  • CentOS6 编译安装 redis-3.2.3
  • ECS应用管理最佳实践
  • JavaScript-Array类型
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • node学习系列之简单文件上传
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • use Google search engine
  • Vue 重置组件到初始状态
  • XML已死 ?
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从0到1:PostCSS 插件开发最佳实践
  • 分类模型——Logistics Regression
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 前端路由实现-history
  • 深度学习在携程攻略社区的应用
  • 使用docker-compose进行多节点部署
  • 使用SAX解析XML
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 移动端唤起键盘时取消position:fixed定位
  • AI算硅基生命吗,为什么?
  • 选择阿里云数据库HBase版十大理由
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #Z2294. 打印树的直径
  • (libusb) usb口自动刷新
  • (python)数据结构---字典
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (五)关系数据库标准语言SQL
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)JAVA中的堆栈
  • ******IT公司面试题汇总+优秀技术博客汇总
  • **CI中自动类加载的用法总结
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容