ppt 图的基本算法 Bfs

输入:

8 9
1 2
1 3
2 4
2 5
3 6
3 7
4 8
5 8
6 7

// 图的BFS,使用C++队列
#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;
#define N 10
int g[N][N],bz[N],n,m;
queue <int> q;
void BFS(int cur)
{ int j;
bz[cur]=1; q.push(cur);
while (!q.empty())
{ cur=q.front(); printf(" V%d ", cur);q.pop();
for (j=1;j<=N;j++)
if (bz[j]==0 && g[cur][j]==1) { q.push(j); bz[j]=1; }
}
}
void input()
{ int i,j,f,t;
scanf("%d%d",&n,&m);
for (int i=1; i<=m; i++)
{ scanf("%d%d",&f,&t); g[f][t]=g[t][f]=1; }
}
int main()
{ memset(g,0,sizeof(g)); memset(bz,0,sizeof(bz));
input(); BFS(1);
}

*************************************************************************************

// 图的BFS
#include <stdio.h>
#include <string.h>
#define N 10
int g[N][N],bz[N],n,m,q[N],qe,qs;
void BFS(int cur)
{ int j,qs,qe;
qs=qe=0; bz[cur]=1; q[qe++]=cur;
while (qs<qe)
{ cur=q[qs++]; printf(" V%d ", cur);
for (j=1;j<=N;j++)
{ if (bz[j]==0 && g[cur][j]==1)
{ q[qe++]=j; bz[j]=1; }
}
}
}
void input()
{ int i,j,f,t;
scanf("%d%d",&n,&m);
for (int i=1; i<=m; i++)
{ scanf("%d%d",&f,&t); g[f][t]=g[t][f]=1; }
}
int main()
{ int i,j;
memset(g,0,sizeof(g)); memset(bz,0,sizeof(bz));
input(); BFS(1);
}

ppt 图的基本算法 Bfs,布布扣,bubuko.com

时间: 2024-10-11 21:27:23

ppt 图的基本算法 Bfs的相关文章

ppt 图的基本算法 dfs

#include <stdio.h>#include<string.h>#define N 10int g[N][N];int bz[N];int n,m ;void DFS(int cur){ int j; bz[cur]=1; printf("V%d",cur); for(j=1;j<=n ;j++ ) if(g[cur][j] && !bz[j]) DFS(j); } void input(){ int i,j,f,t ; scanf

图的遍历算法:DFS、BFS

在图的基本算法中,最初需要接触的就是图的遍历算法,根据访问节点的顺序,可分为深度优先搜索(DFS)和广度优先搜索(BFS). DFS(深度优先搜索)算法 Depth-First-Search 深度优先算法,是一种用于遍历或搜索树或图的算法.沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点. 这一过程一直进行到已发现从源节点可达的所有节点为止. 如果还存在未被发现的节点, 则选择其中一个作为源节点并重复以上过程,整个进程反复

HDU 1026 Ignatius and the Princess I (基本算法-BFS)

Ignatius and the Princess I Problem Description The Princess has been abducted by the BEelzebub feng5166, our hero Ignatius has to rescue our pretty Princess. Now he gets into feng5166's castle. The castle is a large labyrinth. To make the problem si

实验四 图的遍历算法设计与实现

一.实验名称:图的遍历算法设计与实现 二.实验目的: 1.掌握图的深度优先遍历的算法. 2.掌握图的广度优先遍历的算法. 3.实验章节:算法设计与分析 第四章 三.实验内容.实验问题和程序运行结果 第一部分 广度优先遍历算法 1. 分析Graph类,画出Graph类初始化以后的Graph对象的数据结构图. 2. 分析BFS函数,画出流程图. 3. 上述程序   int data[7][7]={{ 1,-1,-1,-1,-1,-1,-1}, { 6, 3, 2,-1,-1,-1,-1}, { 0,

数据结构与算法系列研究七——图、prim算法、dijkstra算法

图.prim算法.dijkstra算法 1. 图的定义 图(Graph)可以简单表示为G=<V, E>,其中V称为顶点(vertex)集合,E称为边(edge)集合.图论中的图(graph)表示的是顶点之间的邻接关系. (1) 无向图(undirect graph)      E中的每条边不带方向,称为无向图.(2) 有向图(direct graph)      E中的每条边具有方向,称为有向图.(3) 混合图       E中的一些边不带方向, 另一些边带有方向.(4) 图的阶      指

zw&#183;准专利&#183;高保真二值图细部切分算法

zw·准专利·高保真二值图细部切分算法     高保真二值图细部切分算法,是中国字体协会项目的衍生作品.     说准专利算法,是因为对于图像算法的标准不了解,虽然报过专利,但不是这方面的,需要咨询专业的专利顾问.     原型是用opencv+python实现的,因为Halcon,对于协会的设计师,门槛太高,所以,特意设计了一套opencv+python的live-cd,解压即可,无需配置. 中国传统书法,有很多飞白.泼墨的手法,产生了很多小孔.孤点,从图像学角度,这些都是细小的感染区. 传统

图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

图形化排序算法比较:快速排序.插入排序.选择排序.冒泡排序

带权图的最短路径算法(Dijkstra)实现

一,介绍 本文实现带权图的最短路径算法.给定图中一个顶点,求解该顶点到图中所有其他顶点的最短路径 以及 最短路径的长度.在决定写这篇文章之前,在网上找了很多关于Dijkstra算法实现,但大部分是不带权的.不带权的Dijkstra算法要简单得多(可参考我的另一篇:无向图的最短路径算法JAVA实现):而对于带权的Dijkstra算法,最关键的是如何“更新邻接点的权值”.本文采用最小堆主辅助,以重新构造堆的方式实现更新邻接点权值. 对于图而言,存在有向图和无向图.本算法只需要修改一行代码,即可同时实

图的遍历(bfs 和dfs)

BFS的思想: 从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1.V2.……Vn,然后依次访问与V1.V2……Vn相邻且未被访问的顶点.如此继续,找到所要找的顶点或者遍历完整个图. 由此可以看出,用BFS进行搜索所搜索的顶点都是按深度进行扩展的,先找到到V0距离为1的所有顶点,然后找到距离V0为2的顶点……所以BFS所搜索到的都是最短的路径. 由于要将距离V0为d(d>0)的且未被方位的点都记录起来,我们采用队列这种数据结构.队列的特点是先进先出(FIFO),从某个顶点出