代码随想录算法训练营Day48 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础

news/2025/1/17 22:31:49/

文章目录

  • 图论理论基础
  • 深搜理论基础
  • 98. 所有可达路径
    • 思路与重点
  • 广搜理论基础


图论理论基础

  • 讲解链接:代码随想录

深搜理论基础

  • 讲解链接:代码随想录

98. 所有可达路径

  • 题目链接:98. 所有可达路径
  • 讲解链接:代码随想录
  • 状态:一遍AC。

思路与重点

  • 邻接矩阵:
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> result; // 收集符合条件的路径
vector<int> path; // 1节点到终点的路径void dfs (const vector<vector<int>>& graph, int x, int n) {// 当前遍历的节点x 到达节点n if (x == n) { // 找到符合条件的一条路径result.push_back(path);return;}for (int i = 1; i <= n; i++) { // 遍历节点x链接的所有节点if (graph[x][i] == 1) { // 找到 x链接的节点path.push_back(i); // 遍历到的节点加入到路径中来dfs(graph, i, n); // 进入下一层递归path.pop_back(); // 回溯,撤销本节点}}
}int main() {int n, m, s, t;cin >> n >> m;// 节点编号从1到n,所以申请 n+1 这么大的数组vector<vector<int>> graph(n + 1, vector<int>(n + 1, 0));while (m--) {cin >> s >> t;// 使用邻接矩阵 表示无线图,1 表示 s 与 t 是相连的graph[s][t] = 1;}path.push_back(1); // 无论什么路径已经是从0节点出发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[pa.size() - 1]  << endl;}
}
  • 邻接表:
#include <iostream>
#include <vector>
#include <list>
using namespace std;vector<vector<int>> result; // 收集符合条件的路径
vector<int> path; // 1节点到终点的路径void dfs (const vector<list<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;// 节点编号从1到n,所以申请 n+1 这么大的数组vector<list<int>> graph(n + 1); // 邻接表while (m--) {cin >> s >> t;// 使用邻接表 ,表示 s -> t 是相连的graph[s].push_back(t);}path.push_back(1); // 无论什么路径已经是从0节点出发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[pa.size() - 1]  << endl;}
}

广搜理论基础

  • 讲解链接:代码随想录

http://www.ppmy.cn/news/1563995.html

相关文章

怎么抓取IOS手机app的网络流量,也就是iphone手机抓包

继续昨天的教程&#xff0c;如抓取ios手机上的https请求。今天介绍如何在抓取iphone手机上的非https请求 也就是socket通信的数据。如果在pc上我们会第一时间讲到wireshark&#xff0c;但是对移动设备&#xff0c;似乎就要复杂很多。最近研究发现的工具嗅探大师&#xff0c;能…

2025 年将是统一网络安全的一年

到 2025 年&#xff0c;网络安全将不再只是 IT 团队专属的技术主题&#xff0c;而是将日益成为董事会层面的优先事项。随着网络攻击的频率和严重性不断增加&#xff0c;董事会将需要能够让他们了解组织安全状况的平台。 Armis 首席执行官 Yevgeny Dibrov 认为&#xff0c;统一网…

windows动态壁纸音频显示效果推荐

背景需求 最近突然想做一个电脑跑马灯&#xff0c;就是播放音乐&#xff0c;那个LED的灯就会闪。现在找到了一个软件版本的效果&#xff0c;大家可以下载看看。这个软件叫做Wallpaper engine。 下载途径 1、先下载steam&#xff0c;然后在steam中下载Wallpaper engine&#x…

高性能多链 Layer2 基础设施 Cartesi:2024 生态发展回顾

Cartesi 是一个由 Linux 驱动的多链 Layer2 基础设施项目&#xff0c;作为一个功能强大的模块化区块链协议&#xff0c;为开发者提供完整的 Linux 环境和高性能 Rollups&#xff0c;专为支持下一代去中心化应用&#xff08;dApps&#xff09;而设计。 Cartesi 以解决区块链应用…

HTML5 Canvas实现的跨年烟花源代码

以下是一份基于HTML5 Canvas实现的跨年烟花源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">…

es,单个节点磁盘使用率高

背景&#xff1a; 磁盘使用率不均匀&#xff0c;一般是因为存在大分片&#xff0c;分片数和机器数不匹配引起的。 这次出现的问题排除了&#xff0c;分片问题。 一个节点使用到87%&#xff0c; 其它节点60% 左右&#xff0c; 原因&#xff1a; 是因为升级配置数据迁移的时候 迁…

什么是DNS缓存?DNS缓存有什么用?

DNS缓存在DNS解析过程中发挥了重要作用&#xff0c;有效提升了解析速度和访问体验。那什么是DNS缓存&#xff0c;DNS缓存有什么用呢&#xff1f;接下来国科云简单介绍下。 什么是DNS缓存&#xff1f; 标准的DNS解析过程&#xff0c;需要进行全球递归查询&#xff0c;依次去请…

掌控 JMeter 测试节奏:Once Only Controller 让关键操作 “一步到位”

嘿&#xff0c;小伙伴们&#xff01;假设你已经顺利安装好 JMeter&#xff0c;也搭建起了测试计划&#xff0c;还添加了线程组&#xff0c;那咱们这就直奔主题&#xff0c;深入探究一下 Once Only Controller 这个超厉害的 “小帮手”&#xff0c;看看它是怎么在性能测试里大显…