图的基础和图的遍历(--蓝桥云)

 图的基础概念

度数:出边+入边的条数

有向边:有箭头

 图的存储方式

//邻接表
List<int []> list[N]
list<x>//存放x的所有出点的信息
list[i][j]={first,second}//其中first表示从i出发的某个出点的编号(这个出点是i的第j个出点),second表示边权
list[1]={{2,0},{3,0}}
//邻接矩阵
d[i][j]//表示从i到j的边的距离(一般情况下为最短距离)如果不存在边的距离为-1.例如右图中:
d[1,2]=0
d[6,3]=7
d[4,3]=-1

DFS遍历图

DFS是深度优先搜索,“一条路走到黑,走过路不会再走”

对于上述图像中的图,我们可以画出它从1开始的DFS轨迹。注意DFS不是唯一的,因为每次的顺序不一样,只要走完就可以了

代码

DFS一般用递归实现

boolean<N>v;//v[i]=true说明i点已经走过了
void dfs(int x){v[x]=true;//打上标记for(int y:list[x]){if(v[y])continue;//如果已经打上标记跳过dfs(y);}}

BFS遍历图

BFS是宽度优先搜索,核心思想是“一层一层往外走,每个点只走一次”,对于下面这个图我们可以画出它的从1开始的BFS轨迹

BFS通常用于求边权相等情况下的最短距离。

代码 

BFS一般用队列来实现

boolean<N> vis;
queue<int> q;//q表示待扩展的点队列
while(q.size()>0)//只要队列不为空
{int x=q.pop();if(v[x])continue;v[x]=true;for(int y:list[x]) q.push(y);}

例题展示

小明在游戏中参加了一个帮派,这一天它突然想知道自己在帮派中是什么地位,但是半拍的查询系统突然坏了,目前只能直到每个人的附属关系,请问你能帮他重建关系网并找出它的地位吗?

给定一个正整数n,代表该帮派的总人数,并且小明的序号是m,给出这n个人中每个人的附属关系,确保给出的关系网为一棵树,帮派地位的定义是按照自己手下有多少帮众决定的,注意手下的手下也算自己的手下。如果手下的帮众相同则按照序号较小的在前面,你能帮助小明找到自己的帮派地位吗?

输入格式

第一行,两个正整数n(1<=n<=10^5)和m(1<=m<=n),代表该帮派的总人数以及小明的序号。

接下来n-1行,每行两个正整数,格式如下:

l,r代表序列为l的人附属与序号为r的人。

输出格式

一行,包含1个正整数,输出按手下人数多少排序后小明的排名。

(答案下期见)

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

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

相关文章

《Effective C++》《杂项讨论——53、不要忽视编译器的警告》

文章目录 1、term53:Pay attention to compiler warnings2、面试相关3、总结4、参考 1、term53:Pay attention to compiler warnings 许多程序员习惯性地忽略编译器警告。他们认为&#xff0c;毕竟&#xff0c;如果问题很严重&#xff0c;编译器应该给一个错误信息而非警告信息…

记录一个写自定义Flume拦截器遇到的错误

先说结论&#xff1a; 【结论1】配置文件中包名要写正确 vim flume1.conf ... a1.sources.r1.interceptors.i1.type com.atguigu.flume.interceptor.MyInterceptor2$MyBuilder ... 标红的是包名&#xff0c;表黄的是类名&#xff0c;标蓝的是自己加的内部类名。这三个都…

C++RTTI(运行时类型识别)

静态类型与动态类型 当我们使用存在继承关系的类型时&#xff0c;必须将一个变量或其他表达式的静态类型与该表达式表示对象的动态类型区分开来。 表达式的静态类型在编译时总是已知的&#xff0c;它是变量声明时的类型或表达式生成的类型&#xff1b;动态类型则是变量或表计…

百度蜘蛛池平台在线发外链-原理以及搭建教程

蜘蛛池平台是一款非常实用的SEO优化工具&#xff0c;它可以帮助网站管理员提高网站的排名和流量。百度蜘蛛池原理是基于百度搜索引擎的搜索算法&#xff0c;通过对网页的内容、结构、链接等方面进行分析和评估&#xff0c;从而判断网页的质量和重要性&#xff0c;从而对网页进行…

前端学习--品优购项目

文章目录 前端学习--品优购项目1.案例铺垫文件建立与命名必备文件网站favicon图标网站TDK三大标签SEO优化常用命名 2.LOGO SEO优化3.实际代码4.申请免费域名 前端学习–品优购项目 1.案例铺垫 文件建立与命名 一个项目中为了方便实用和查找内容会有多个文件夹&#xff0c;比如…

windows10搭建reactnative,运行android全过程

环境描述 win10,react-native-cli是0.73&#xff0c;nodeJS是20&#xff0c;jdk17。这都是完全根据官网文档配置的。react-native环境搭建windows。当然官网文档会更新&#xff0c;得完全按照配置来安装&#xff0c;避免遇到环境不兼容情况。 安装nodeJS并配置 这里文档有详…

如何制作Word模板并用Java导出自定义的内容

1前言 在做项目时会按照指定模板导出word文档,本文讲解分析需求后,制作word模板、修改模板内容,最终通过Java代码实现按照模板自定义内容的导出。 2制作word模板 2.1 新建word文档 新建word文档,根据需求进行编写模板内容,调整行间距和段落格式后将指定替换位置留空。…

文件操作(随机读写篇)

1. 铺垫 建议先看&#xff1a; 文件操作&#xff08;基础知识篇&#xff09;-CSDN博客 文件操作&#xff08;顺序读写篇&#xff09;-CSDN博客 首先要指出的是&#xff0c;本篇文章中的“文件指针”并不是指FILE*类型的指针&#xff0c;而是类似于打字时的光标的东西。 打…

竞赛 python+深度学习+opencv实现植物识别算法系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的植物识别算法研究与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;4分 &#x1f9ff; 更多…

【pytest】pytest` 中几种常用的参数化方法

pytest 是一个强大的 Python 测试框架&#xff0c;它提供了多种参数化测试的方法。参数化测试允许你使用不同的输入集来运行相同的测试逻辑&#xff0c;从而确保代码在各种条件下都能正常工作。以下是 pytest 中几种常用的参数化方法&#xff1a; 1. 使用 pytest.mark.paramet…

154 Linux C++ 通讯架构实战9 ,信号功能添加,信号使用sa_sigaction 回调,子进程添加,文件IO详谈,守护进程添加

初始化信号 使用neg_init_signals(); 在nginx.cxx中的位置如下 //(3)一些必须事先准备好的资源&#xff0c;先初始化ngx_log_init(); //日志初始化(创建/打开日志文件)&#xff0c;这个需要配置项&#xff0c;所以必须放配置文件载入的后边&#xff1b;//(4)一些初…

Web应用安全攻防战:识别十大威胁,掌握防护要点

OWASP&#xff08;Open Worldwide Application Security Project&#xff09;是一家致力于应用安全威胁研究的非盈利机构。通过对超过20万个组织进行调研分析&#xff0c;该机构每三年左右就会发布一次《Web应用安全风险Top10》报告&#xff0c;这个报告已经成为全球企业开展We…

Redis入门三(主从复制、Redis哨兵、Redis集群、缓存更新策略、缓存穿透、缓存击穿、缓存雪崩)

文章目录 一、主从复制1.单例redis存在的问题2.主从复制是什么&#xff1f;3.主从复制的原理4.主从搭建1&#xff09;准备工作2&#xff09;方式一3&#xff09;方式二 5.python中操作1&#xff09;原生操作2&#xff09;Django的缓存操作 二、Redis哨兵&#xff08;Redis-Sent…

Lilishop商城(windows)本地部署【docker版】

Lilishop商城&#xff08;windows&#xff09;本地部署【docker版】 部署官方文档&#xff1a;LILISHOP-开发者中心 https://gitee.com/beijing_hongye_huicheng/lilishop 本地安装docker https://docs.pickmall.cn/deploy/win/deploy.html 命令端页面 启动后docker界面 注…

创建springboot项目的两种方式

创建springboot项目的两种方式 文章目录 创建springboot项目的两种方式一、第一种方式&#xff1a;springboot作为parent二、第二种方式&#xff1a;import 依赖管理方式三、问题1&#xff1a;无法正确打包四、问题2&#xff1a;无法执行单元测试 一、第一种方式&#xff1a;sp…

第十四章 MySQL

一、MySQL 1.1 MySql 体系结构 MySQL 架构总共四层&#xff0c;在上图中以虚线作为划分。 1. 最上层的服务并不是 MySQL 独有的&#xff0c;大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如&#xff1a;连接处理、授权认证、安全等。 2. 第二层的架构包括…

三个表的联合查询的场景分析-场景4:c表维护a和b表的id关联关系(一对多)

基础SQL演练&#xff0c;带详细分析&#xff0c;笔记和备忘。 目录 背景介绍 表数据 需求1&#xff1a;查询g表所有记录&#xff0c;以及关联的h的id 需求2&#xff1a;在需求1基础上&#xff0c;查出关联的h的其它字段&#xff08;name&#xff09; 需求3&#xff1a;在需…

API接口开发1688阿里巴巴官方API接口按关键词采集ALIBABA商品api接入演示

要按关键词采集阿里巴巴商品&#xff0c;你需要使用1688API接口。以下是一个简单的Python示例&#xff0c;展示了如何使用requests库调用阿里巴巴API并解析返回的数据&#xff1a; # coding:utf-8 """ Compatible for python2.x and python3.x requirement: pi…

AR智能眼镜解决方案_MTK平台安卓主板硬件芯片方案开发

AR智能眼镜&#xff0c;是一个可以让现场作业更智能的综合管控设备。采用移动互联网、大数据和云计算等技术&#xff0c;现场数据的采集与分析&#xff1b;同时实现前端现场作业和后端管理的实时连动、信息的同步传输与存储。让前端现场作业更加智能&#xff0c;后端管理更加高…

项目安全性与权限管理实践与探讨

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一. 身份验证和授权 二. 输入验证和过滤 2.1. 添加O…