#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int vis[101];
int a[101][101];
int n,m,sum;//n个点,m条边
void dfs(int s)
{
printf("%d ",s);
sum++;
if(sum==n)
return;
for(int i=1; i<=n; i++)
{
if(a[s][i]&&!vis[i])
{
vis[i]=1;
dfs(i);
}
}
}
void bfs()
{
memset(vis,0,sizeof(vis));
queue<int>k;
for(int i=1; i<=n; i++)
{
if(!vis[i])
{
vis[i]=1;
printf("%d ",i);
}
k.push(i);
while(!k.empty())
{
int t=k.front();
k.pop();
for(int j=1; j<=n; j++)
{
if(!vis[j]&&(a[j][t]==1||a[t][j]==1))
{
vis[j]=1;
printf("%d ",j);
k.push(j);
}
}
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)==2)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(i==j)
a[i][j]=0;
else
a[i][j]=-1;
}
}
int x,y;
for(int i=0; i<m; i++)
{
scanf("%d%d",&x,&y);
a[x][y]=1;
a[y][x]=1;
}
vis[1]=1;
sum=0;
printf("dfs:\n");
dfs(1);
printf("\nbfs:\n");
bfs();
printf("\n");
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
printf(" %d到%d的距离:%d ",i,j,a[i][j]); ///-1表示无法到达
}
printf("\n");
}
}
}相关推荐
图的遍历方法——深度优先与广度优先
学习了那么长时间,也该做一下总结了。接下来就简单说一下我对搜索的理解吧。 图的遍历主要有两种算法: 广度优先搜索(Breadth-First-Search)和深度优先搜索(Depth-First-Search)。 那么就先来说一下深度优先搜索吧。 深度优先搜索算法所遵循的搜索策略是尽可能“深”地搜索一个图。它的基本思想就是:首先访问图中某一起始顶点v,然后由v出发,访问与v邻接且未被访问的...
深度遍历模版与广度遍历模版
因为斜线的斜率是1,所以 y=x+b. y=-x+b 即可 算出两个方向的截距,通过截距可以唯一确定一条直线。有 “最短路” 的概念, 当图的权重都是为1的时候, 图先找到的都是bfs,最短的。需要额外的数据存储 vis表示是否访问过 dis表示距离。可信性剪枝是判断 走的过程提前判断 ,非法的就没必要走了。但是费空间 o(2^N). 深搜只用o(n)key是列,value是行。从第一行看皇后 能看到放在哪一列。第二个map 存储x+y的截距。第三个map 存储x-y的解决。走的过程中 判断是否在。
(有向)图的深度优先遍历算法模板算法(java源码)
/* * (有向)图的深度优先遍历算法模板 */ package dsa; public abstract class DFS extends GraphTraverse { //变量 protected static int clock = 0;//遍历过程中使用的计时钟 //构造方法 public DFS(Graph g) { super(g); } //深度优先遍历算法 protected Object traverse(Vertex v, Object info) {//从顶点v出发,做深度优先查找 if (UNDISCOVERED != v.getStatus()) return null;//跳过已访问过的顶点(针对非连通图) v.setDStamp(clock++); v.setStatus(DISCOVERED); visit(v, info);//访问当前顶点 for (Iterator it = v.outEdges(); it.hasNext();) {//检查与顶点v Edge e = (Edge)it.getNext();//通过边e = (v, u) Vertex u = (Vertex)e.getVPosInV(1).getElem();//相联的每一顶点u switch (u.getStatus()) {//根据u当前的不同状态,分别做相应处理 case UNDISCOVERED ://若u尚未被发现,则 e.setType(TREE);//e被归类为“树边” traverse(u, info);//从u出发,继续做深度优先查找 break; case DISCOVERED ://若u已经被发现,但对其访问尚未结束,则 e.setType(BACKWARD);//将e归类为“后向跨边” break; default ://VISITED,即对u的访问已经结束 if (u.getDStamp() < v.getDStamp())//若相对于v,u被发现得更早,则 e.setType(CROSS);//将e归类为“横跨边” else//否则 e.setType(FORWARD);//将e归类为“前向跨边” break; } }//至此,v的所有邻居都已访问结束,故 v.setFStamp(clock++); v.setStatus(VISITED);//将v标记为VISITED return null;//然后回溯 } }
广度优先遍历
广度优先遍历,BFS,柔性数组
图的深度优先和广度优先遍历
数据结构有关的图的深度优先和广度优先遍历
深度优先搜索模板
这个TXT文档里有我们编程时常常需要的深度优先搜索算法的模板
BFS (Java) 广度优先搜索 简单介绍、模板、案例(一)
深度优先搜索DFS和广度优先搜索BFS是经常使用的搜索算法,在各类题目中都有广泛的应用。 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。 广度优先搜索算法(Breadth-First Search,缩写为 BFS),又称为宽度优先搜索,是一种图形搜索算法。简单的说,BFS 是从根结点开始,沿着树的宽度遍历树的结点。如果所有结点均被
树的深度遍历
某人要带一条狗、一只鸡、一箩米过河,但小船必须要由人来划,最多只能载一物过河,而,当人不在场时、狗要咬鸡、鸡要吃米。问此人应如何过河。
【算法】广度优先遍历 (BFS)
本文介绍了 BFS 的概述、代码实现以及应用。
ContextCapture导入点云进行重建
ContextCapture导入点云进行重建
nrf52840的uart0与uart1双串口使用
nrf52840的uart0与uart1双串口使用 项目原使用nrf52832,后面由于项目需要用到双串口,改用nrf52840,官方的例程没看到使用uart1的,找遍全网都没找到uart1的使用资料,有些不负责任的网文居然说40也只有一个uart,吓得俺赶紧又查看了一次datesheet,O得K、木鸭梨 SDK代码uart驱动中,搜索到uart1的驱动部分,说明官方驱动有uart1支持的 自己动手,丰衣足食吧,下面以nRF5_SDK_17.0.0_9d13099版本,在examples\ble_per
C++数据结构-图的遍历:DFS深度优先及广度优先详解
DFS(Depth-First-Search,深度优先搜索)算法的具体做法是:从某个点一直往深处走,走到不能往下走之后,就回退到上一步,直到找到解或把所有点走完。在实现这一个依次的访问顺序时,操作动作存储与数据结构(栈)的思想及其相似,同时也由于栈的性质,我们可以通过递归来简化栈的创建,因此DFS算法的两种做法分别时利用栈或者递归实现。算法步骤(递归或栈实现)a)访问指定起始地点。b)若当前访问顶点的邻接顶点有未被访问的顶点,就任选一个访问。
MATLAB仿真实战:双有源桥(DAB)变换器的扩展移相调制(EPS)全流程解析
本文提供了一份详细的MATLAB/Simulink仿真实战指南,手把手解析双有源桥(DAB)变换器在扩展移相调制(EPS)下的全流程建模。内容涵盖从核心原理、主功率电路搭建、EPS驱动信号生成,到仿真运行、波形分析及模型优化的完整步骤,旨在帮助工程师和研究者快速掌握DAB变换器的仿真与性能验证方法。
【图】深度优先遍历 & 广度优先遍历
以此类推,我们将遍历与顶点 2、3、4相邻的未遍历过的顶点,将其添加到队列中。4)以此类推,接下来就会出栈顶点 9、8、1,回溯到顶点 0,走顶点 3这条支路,直到遍历完所有的顶点。的过程,深度搜索,走到尽头再不断回退找其他可行的支路,遍历的方式有点像二叉树的前中后序遍历。的过程,一层一层的由内而外扩张,遍历的方式有点像二叉树的层序遍历(自上而下)4)最后,将遍历与顶点 8、10、5、6相邻的未遍历过的顶点,依次出队入队。2)弹出顶点 0 ,将其附近的顶点1、2、3、4依次遍历放入队列中。
akshare 布林通道策略
import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.
图像分割 - 使用Mask R-CNN模型在COCO数据集上进行图像分割任务
图像分割是计算机视觉领域的一个重要任务,它旨在将图像中的每个像素分类为对象或背景。Mask R-CNN是一种基于区域的卷积神经网络,可用于图像分割任务。它是Faster R-CNN的扩展,将目标检测与图像分割结合起来,能够同时检测和分割对象。在本博客中,我们将使用Mask R-CNN模型在COCO数据集上进行图像分割任务。我们将介绍如何下载和准备COCO数据集,以及如何使用Mask R-CNN模型进行训练和推理。
广度优先搜索和深度优先搜索
文章目录1. 前言2. 广度优先搜索和深度优先搜索1)深度优先搜索2)广度优先搜索3. 深度优先搜索算法框架1)二叉树深度优先搜索模板2)图深度优先搜索模板3)二维矩阵深度优先搜索模板4. 广度优先搜索算法框架1)单源广度优先搜索2)多源广度优先搜索3)双向广度优先搜索 1. 前言 深度优先搜索算法的基础是递归,如果你对递归还不熟悉的话,建议先去看看递归的概念,做一些递归的练习题,也可以看我之前写的递归的文章:递归算法详解 2. 广度优先搜索和深度优先搜索 在这篇文章中同时总结下广度优
Realtek千兆PHY RTL8211FS相关寄存器操作详解
通过合理配置和控制RTL8211FS寄存器,您可以实现对以太网的各种功能和参数的控制和配置。请注意,具体的寄存器操作和配置值可能因具体需求而有所不同,您应参考RTL8211FS芯片的数据手册以获取准确的寄存器说明和操作规范。我们将提供相应的源代码示例,以帮助您理解和实施这些操作。通过操作这些寄存器,我们可以配置和控制RTL8211FS芯片的各种功能和参数。需要注意的是,具体的寄存器操作和配置值会根据您的具体需求而有所不同。您需要参考RTL8211FS芯片的数据手册以获取详细的寄存器说明和操作规范。
二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)
二叉树的深度优先遍历(DFS)与广度优先遍历(BFS) 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止。 广度优先遍历:从根节点出发,在横向遍历二叉树层段节点的基础上纵向遍历二叉树的层次。 DFS:ABDECFG BFS:ABCDEFG DFS实现: 数据结构:栈 父节点
【仿真技巧】Smart Eye Probe在ADS信号仿真中的应用
Smart_Eye_Probe是一个眼探头,允许灵活数量的输入通道,输入通道支持单端或差分信号的混合,并且,可以使用一个共同的时钟信号触发通道的眼图。目前,仅支持瞬态(Transient)和通道(Channel Sim)逐位模式(Bit by bit)模拟,不支持信道统计(Statistical)模式和DDR总线(DDRSim)仿真。
手把手教你学simulink(36.1)--ACAC变换器场景示例:基于 Simulink 的矩阵变换器(Matrix Converter)
矩阵变换器(Matrix Converter, MC)是一种直接将交流电(AC)转换为不同频率和幅值的交流电的电力电子设备。与传统的基于直流环节的变频器不同,矩阵变换器不需要中间的直流环节,而是通过双向开关直接在输入和输出之间进行能量传递。这种结构使得矩阵变换器具有更高的效率、更小的体积和更好的动态响应。在本项目中,我们将使用 MATLAB/Simulink 来建模和仿真一个矩阵变换器,并分析其性能。Simulink 是一个强大的仿真工具,特别适合用于电力电子系统的建模和仿真。
算法模型从入门到起飞系列——广度优先遍历(BFS)
探索算法之美,深入浅出之广度优先遍历
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
树与图的深度,广度优先遍历
说实话,我一直不想学这一部分,因为我觉得这部分很难学,遇到的题目也很难懂,但是21年蓝桥杯 c++ b组又出了最短路问题,索性觉得我逃不过了,所以说打算花费一周的时间学习1.树与图的存储,2.树与图的深度和广度优先遍历,3.最短路的问题,次篇文章记录1和2的内容,下篇文章记录3的内容,因为内容很多。文章是看了yxc的视频之后来记录下。 1.简单介绍 首先,树在本质上就是一种图,而图又包含有向图和无向图。我们在存储图的时候,通常采用两种方式。1.邻接矩阵 2.邻接表 。 使用邻接矩阵不如使用邻接表好用(
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
树和图的深度优先遍历和广度优先遍历
树是一种特殊的图,树的存储也可看作图的存储,图又分为有向图(边是有方向的)和无向图(边是无方向的),无向图可以看成双向的有向图,因此图的存储可简化成有向图的存储。
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
搜索与图论-树与图的广度优先遍历
树与图的广度优先遍历
图的邻接表:广度优先遍历&&深度优先遍历
图的邻接表:广度优先遍历 时间限制: 1S类别: DS:图->邻接表 晚于: 2022-07-31 23:55:00后提交分数乘系数50% 截止日期: 2022-08-07 23:55:00问题描述 : 设计并实现一个算法,应用递归的程序设计方法,对一个已存在的图进行广度优先遍历(BFS),并输出遍历的顶点线性序列。遍历的起点通过输入指定。注意:遍历时,仅从该点出发遍历整个图,如果图不连通,则只遍历一个子图。图的存储结构采用邻接表。将其加入到ADT中。......
3936



被折叠的 条评论
为什么被折叠?



