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

news2025/3/20 21:03:40

学习资料:代码随想录

连通图是给无向图的定义,强连通图是给有向图的定义

朴素存储:二维数组

邻接矩阵

邻接表:list基础知识:C++ 容器类 <list> | 菜鸟教程

深搜是沿着一个方向搜到头再不断回溯,转向;广搜是每一次搜索要把当前能够得到的方向搜个遍

深搜三部曲:传入参数、终止条件、处理节点+递推+回溯

98. 所有可达路径

卡码网题目链接(ACM模式)

先是用邻接矩阵,矩阵的x,y表示从x到y有一条边

主要还是用回溯方法遍历整个数组的思想

#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){  //dfs() 必须在 main() 之前声明,否则编译器找不到它
    if(x==n){
        result.push_back(path);
        return;
    }
    for(int i=1;i<=n;i++){
        if(graph[x][i]==1){        //x是有可能连接到任意节点的,而不是在数值上只能向前遍历
            path.push_back(i);
            dfs(graph,i,n);
            path.pop_back();
        }
    }
}
 
int main(){
    int N,M;
    cin>>N>>M;
    vector<vector<int>> graph(N+1,vector<int>(N+1,0));   //这两个声明在main里也不行   
 
    int s,t;
    for(int i=0;i<M;i++){
        cin>>s>>t;
        graph[s][t]=1;
    }
    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[pa.size()-1]<<endl;
    }
     
}

然后是邻接表:

#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){  //dfs() 必须在 main() 之前声明,否则编译器找不到它
    if(x==n){
        result.push_back(path);
        return;
    }
    for(int i:graph[x]){     
        path.push_back(i);
        dfs(graph,i,n);
        path.pop_back();
    }
}
 
int main(){
    int N,M;
    cin>>N>>M;
    vector<list<int>> graph(N+1);   //这两个声明在main里也不行   
 
    int s,t;
    for(int i=0;i<M;i++){
        cin>>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[pa.size()-1]<<endl;
    }
     
}

对于list的处理我还需要适应一下

例如for(int i:graph[x])

graph[s].push_back(t);

广搜大致思路为建立一个队列,每次处理一个位置将其指向的其他方向入栈,然后将该位置弹出,一直这样处理到队列为空了就是都处理完了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP、UDP协议的应用、ServerSocket和Socket、DatagramSocket和DatagramPacket

DAY13.1 Java核心基础 TCP协议 TCP 协议是面向连接的运算层协议&#xff0c;比较复杂&#xff0c;应用程序在使用TCP协议之前必须建立连接&#xff0c;才能传输数据&#xff0c;数据传输完毕之后需要释放连接 就好比现实生活中的打电话&#xff0c;首先确保电话打通了才能进…

配置VMware Workstation中Ubuntu虚拟机与Windows主机的剪贴板共享功能

步骤1&#xff1a;安装或更新VMware Tools组件‌ ‌卸载旧版本工具&#xff08;可选&#xff09;‌ 若已安装旧版工具&#xff0c;建议先卸载&#xff1a; sudo apt-get autoremove open-vm-tools‌安装必需组件‌ sudo apt-get updatesudo apt-get install open-vm-tools o…

深入理解Python闭包与递归:原理、应用与实践

目录 闭包 什么是闭包&#xff1a; 闭包的基本结构&#xff1a; 实现闭包的条件&#xff1a; 1.嵌套函数 2.内函数引用外部函数的变量 3.外部函数返回内部函数 4.外部函数已经执行完毕 递归函数 什么是递归函数&#xff1a; 递归函数条件 1.必须有个明确的结束条…

SeaCMS代码审计

漏洞描述 漏洞分析 根据漏洞描述定位漏洞代码 当actionsaveCus或者save时&#xff0c;可以进行一个文件写入&#xff0c;不过文件类型被进行了限制&#xff0c;只有html,htm,js,txt,css 虽然这里并不能写入php文件&#xff0c;但是当actionadd或者custom时&#xff0c;这里进行…

好看的网络安全登录页面 vue http网络安全

一、http协议 http协议是一种网络传输协议&#xff0c;规定了浏览器和服务器之间的通信方式。位于网络模型中的应用层。&#xff08;盗图小灰。ヾ(◍∇◍)&#xff89;&#xff9e;&#xff09; 但是&#xff0c;它的信息传输全部是以明文方式&#xff0c;不够安全&#xff0c;…

Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流

GPT-SoVITS GPT-SoVITS- v2&#xff08;v3也可以&#xff0c;两者对模型文件具有兼容&#xff09; 点击后 会进入新的游览器网页 ----- 看了一圈&#xff0c;发现主要问题集中在模型的训练很需要CPU&#xff0c;也就是模型的制作上&#xff0c;问题很多&#xff0c;如果有现有…

Redis哈希槽机制的实现

Redis哈希槽机制的实现 Redis集群使用哈希槽&#xff08;Hash Slot&#xff09;来管理数据分布&#xff0c;整个集群被划分为固定的16384个哈希槽。当我们在集群中存储一个键时&#xff0c;Redis会先对键进行哈希运算&#xff0c;得到一个哈希值。然后&#xff0c;Redis将该哈…

docker pull 提示timeout

通过命令行拉取对应的mysql版本提示网络超时。 开始排查&#xff0c;首先确认是否能浏览器访问。ok的&#xff0c;可以正常访问。 终端curl 排查嗯 有问题 改了下 终端 vim ~/.zshrc 加入 export HTTP_PROXY"http://127.0.0.1:7890" export HTTPS_PROXY"…

(超详细) ETL工具之Kettle

Kettle简介 kettle最早是一个开源的ETL工具&#xff0c;后命名为Pentaho Data Integration。由JAVA开发&#xff0c;支持跨平台运行&#xff0c;其特性包括&#xff1a;支持100%无编码、拖拽方式开发ETL数据管道&#xff0c;可对接包括传统数据库、文件、大数据平台、接口、流…

random_masking 函数测试

文章目录 1. description2. excel3. pytorch code 1. description 功能&#xff1a;按一定比例的随机部分样本&#xff0c;简单来说就是按照一定的比例将行向量从小到大的顺序提取出来。思考1&#xff1a; 用了均匀分布&#xff0c;并且按照一定比例&#xff0c;取前prob概率来…

TDengine 中的流式计算

简介 TDengine 中的流计算&#xff0c;功能相当于简化版的 FLINK &#xff0c; 具有实时计算&#xff0c;计算结果可以输出到超级表中存储&#xff0c;同时也可用于窗口预计算&#xff0c;加快查询速度。 创建流式计算 CREATE STREAM [IF NOT EXISTS] stream_name [stream_o…

Java 大视界 -- Java 大数据在智慧交通自动驾驶仿真与测试数据处理中的应用(136)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

JVM的一些知识

JVM简介 JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java 虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。常见的虚拟机&#xff1a;JVM、VMwave、Virtual Box。 JVM 和其他两个虚拟机的区别&#xff1a; VMw…

C语言每日一练——day_7

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第七天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…

Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹

引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…

用hexo初始化博客执行hexo init时碰到的问题

用hexo初始化博客执行hexo init时碰到的问题 $ hexo init myblog INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git fatal: unable to access https://github.com/hexojs/hexo-starter.git/: SSL certificate problem: unable to get local issuer cer…

4.1--入门知识扫盲,ISO知识体系介绍(看一遍,协议啥的全部记住)

OSI七层模型&#xff1a;网络世界的"七重天"生存指南&#xff08;附快递小哥版图解&#xff09; “如果你觉得网络分层很抽象&#xff0c;那就想象自己在寄快递” —— 来自一个被三次握手逼疯的程序员 开场白&#xff1a;网络通信就像送外卖 假设你要给隔壁妹子送奶…

AI训练如何获取海量数据,论平台的重要性

引言&#xff1a;数据——AI时代的“新石油” 在人工智能和大模型技术飞速发展的今天&#xff0c;数据已成为驱动技术进步的 “ 燃料 ”。无论是训练聊天机器人、优化推荐算法&#xff0c;还是开发自动驾驶系统&#xff0c;都需要海量、多样化的数据支持。 然而&#xff0c;获…

Git 使用SSH登陆

一、SSH介绍 SSH连接相比于HTTP连接会简单一点&#xff0c;因为SSH连接通过了私钥与公钥进行身份认证&#xff0c;这样就不需要像HTTP一样&#xff0c;每次clone或者操作仓库都需要输入密码 其中私钥和密钥是需要在自己电脑上生成的&#xff0c;通过命令即可生成一个私钥和一个…

织梦DedeCMS修改文章【标题、短标题、关键词】长度限制

在后台虽然可以设置标题的长度&#xff0c;但是数据库的字段固定是60个字符&#xff0c;短标题是36字符&#xff0c;关键词30字符&#xff0c;所以这里教大家修改一下织梦DedeCMS修改【标题】【短标题】【关键词】长度限制 一、后台配置 1、进入dede后台管理 -> 系统 ->…