图的宽度优先搜索

原创 2015年07月06日 21:56:59

图的宽度优先搜索是按照某种顺序访问一个节点的所有子节点这一层节点扫描结束后再扩展到下一层



访问顺序为1-2-3-4-5

现在在第一行输入n个节点,m个关系式

接下来输入m行关系式,每行关系式包含c,d分别表示c,d节点相连

要求输出图的宽度有限遍历顺序~~

#include <iostream>

#include <cstdio>
#include <queue>
using namespace std;
void dfs(int cur);
 int book[101];//用来标记该节点是否被访问过,初始化为未访问过
  int a[101][101];
   queue<int>q;
  int n;//n为总结点的个数
  int main()
  {

      int i,j,c,d,m,temp;//m为需要读入关系式的个数
      scanf("%d%d",&n,&m);
      for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)//从一开始是因为节点关系从1~n
        if (i==j) a[i][j]=0;//如果为同一点,则距离为0(事实上这一题0和无穷大可以归为一类,这样写只是为了方便理解,因为只考虑这两点是否相连,即是否等于1)
        else a[i][j]=10000;//设置两点不相连(即距离无穷大)
        for (i=1;i<=m;i++)
        {

            scanf("%d%d",&c,&d);
            a[c][d]=1;
            a[d][c]=1;//无向图
        }
        book[1]=1;//从1开始遍历(你也可以规定从哪里开始遍历)
        q.push(1);
        while(!q.empty())
        {
        printf("%d ",q.front());
        temp=q.front();//记录元素
        for (i=1;i<=n;i++)//按照某种顺序(这里其实默认从数字小到大排列)
        if ((a[i][temp]==1)&&book[i]==0)//如果第i个节点与cur相连,同时第i个没有被访问过
       {
        q.push(i);
        book[i]=1;//每个点只要访问一次
       }
       q.pop();
       }

     return 0;

}

  }

参考《啊哈!算法》



版权声明:本文为博主原创文章,未经博主允许不得转载。

【算法入门】广度/宽度优先搜索(BFS)

广度/宽度优先搜索(BFS) 【算法入门】 郭志伟@SYSU:raphealguo(at)qq.com 2012/04/27 1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广...
  • raphealguo
  • raphealguo
  • 2012年04月30日 02:58
  • 69973

宽度优先搜索(BFS)的应用——走迷宫

题目描述: sun所在学校每年都要举行电脑节,今年电脑节有一个新的趣味比赛项目叫做闯迷宫。 sun的室友在帮电脑节设计迷宫,所以室友就请sun帮忙计算下走出迷宫的最少步数。 知道了最少步数就可以辅助...
  • lidiyang1993
  • lidiyang1993
  • 2015年04月20日 15:24
  • 566

广度优先搜索:迷宫问题

用广度优先搜索解决迷宫问题是一个比较基础的方法。由于自己在算法方面基础不是很好,并没有达到能随手就写出BFS的水平,所以花了点时间写了一个BFS来解决比较基础的迷宫问题,权当练习,并供自己以后参考。 ...
  • u010235787
  • u010235787
  • 2015年06月22日 23:28
  • 2204

生成图-深度优先搜索/宽度优先搜索

问题提出:
  • ljj583905183
  • ljj583905183
  • 2014年12月03日 17:54
  • 3441

简述树的深度优先算法、广度优先算法,及非递归实现的特点。

二叉树的深度优先遍历、广度优先遍历和非递归遍历 二叉树的遍历: D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。 给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。 ...
  • zzs1993
  • zzs1993
  • 2015年07月28日 10:36
  • 523

宽度优先搜索BFS算法

宽度优先搜索BFS算法 什么是宽度优先搜索? 宽度优先搜索(BFS,Breadth_First Search)总是优先搜索距离初始状态近的状态,也就是说,他是按照开始状态->只需一次转移就可以...
  • LiuRenyou
  • LiuRenyou
  • 2017年05月26日 20:43
  • 462

深度优先搜索与宽度优先搜索的知识点归纳

1、什么是搜索?        搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。在竞赛中,搜索法还被当做“救命稻草”——大多数问题都可以使...
  • lzy201610
  • lzy201610
  • 2017年12月08日 23:39
  • 74

图的宽度优先搜索(数组实现)

Akatsuki
  • Akatsuki__Itachi
  • Akatsuki__Itachi
  • 2017年11月10日 11:55
  • 78

广度优先搜索实例

1.Symmetric Tree Given a binary tree, check whether it is a mirror of itself (ie, symmetric around ...
  • cumtwyc
  • cumtwyc
  • 2014年12月15日 17:58
  • 605

BFS 宽度优先搜索 算法摘记

源自网络与书籍   自己学习 算法摘记
  • u012605629
  • u012605629
  • 2014年08月14日 12:28
  • 1448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图的宽度优先搜索
举报原因:
原因补充:

(最多只允许输入30个字)