1762: 算法7-4,7-5:图的遍历——深度优先搜索

原创 2015年07月10日 09:46:16

题目描述

深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的推广。其过程为:假设初始状态是图中所有顶点未曾被访问,则深度优先搜索可以从图中的某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作为起始点,重复上述过程,直至图中所有顶点都被访问到为止。
其算法可以描述如下:
在本题中,读入一个无向图的邻接矩阵(即数组表示),建立无向图并按照以上描述中的算法遍历所有顶点,输出遍历顶点的顺序。

输入

输入的第一行包含一个正整数n,表示图中共有n个顶点。其中n不超过50。
以后的n行中每行有n个用空格隔开的整数0或1,对于第i行的第j个0或1,1表示第i个顶点和第j个顶点有直接连接,0表示没有直接连接。当i和j相等的时候,保证对应的整数为0。
输入保证邻接矩阵为对称矩阵,即输入的图一定是无向图。

输出

只有一行,包含n个整数,表示按照题目描述中的深度优先遍历算法遍历整个图的访问顶点顺序。每个整数后输出一个空格,并请注意行尾输出换行。

样例输入

4
0 1 0 1
1 0 0 0
0 0 0 1
1 0 1 0

样例输出

0 1 3 2 

提示

在本题中,需要熟练掌握图的邻接矩阵存储方式。在建立完成无向图之后,需要严格按照题目描述的遍历顺序对图进行遍历。另外,算法中描述的FirstAdjVex函数和NextAdjVex函数,需要认真的自行探索并完成。

通过这道题目,应该能够对图的深度优先搜索建立更加直观和清晰的概念。

program p1762;
var
 v:array[1..51]of boolean;
 a:array[1..51,1..51]of longint;
 i,j,k,n:longint;
 procedure bianli(i:longint);
 var j:longint;
 begin
 v[i]:=true;
 write(i-1,' ');
 for j:=1 to n do
  if (not v[j]) and(a[i,j]=1) then bianli(j);
 end;
begin
 readln(n);
 fillchar(v,sizeof(v),false);
 for i:=1 to n do
  for j:=1 to n do
   read(a[i,j]);
  bianli(1);
end.

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

1763: 算法7-6:图的遍历——广度优先搜索

题目描述 广度优先搜索遍历类似于树的按层次遍历的过程。其过程为:假设从图中的某顶点v出发,在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“...
  • jing1223639316
  • jing1223639316
  • 2015年07月10日 09:46
  • 650

算法:图的深度优先遍历(Depth First Search)

图的遍历和树的遍历类似,我们希望从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traverse Graph)。 图的遍历方法一般有两种,第一种是深度优先遍历(...
  • Simba888888
  • Simba888888
  • 2013年04月30日 09:19
  • 16705

算法导论7.4-5

题目: 当输入数据已经“几乎有序时”,插入排序很快,在实际应用中,我们可以利用这一特点来提高快速排序的速度。当对一个长度小于k的子数组调用快速排序时,让它不做任何排序就返回。当上一层的快速排序调...
  • yukid2012
  • yukid2012
  • 2014年10月06日 17:14
  • 777

图遍历之深度优先搜索

1. 图(graph)的基本概念: (1). 图由顶点(vertex)和边组成(edge)。 (2). 图分又分为有向图(directed graphs)和无向图(undirected graphs)...
  • mcgrady_tracy
  • mcgrady_tracy
  • 2013年10月08日 21:04
  • 15467

图的深度优先遍历-C语言实现

#include #include #include #include #define MAXLIN 40 /*----邻接表存储结构---*/ //-----------------表节...
  • baolibin528
  • baolibin528
  • 2014年10月16日 18:41
  • 5831

Java实现图的深度和广度优先遍历算法

最近要学习写网络爬虫,所以把图的深度和广度搜索都再温习一下。
  • u013761665
  • u013761665
  • 2015年08月11日 10:21
  • 13241

数据结构学习笔记 图:深度优先搜索(严蔚敏版)

深度youx
  • u010721079
  • u010721079
  • 2014年05月31日 17:01
  • 1106

第17周 啊哈算法 图的遍历算法(深度优先)

问题及答案: #include int min=999999,n; int e[101][101]; int book[101]; void dfs(int cur,int dis) { in...
  • Emperor_21AD_ShiDi
  • Emperor_21AD_ShiDi
  • 2016年07月20日 09:27
  • 722

【经典算法】:图的遍历算法的实现

#include #include "StdAfx.h" #define MAX 20 #include "malloc.h" int visited[MAX]; //访问标志数组 ...
  • qq_23100787
  • qq_23100787
  • 2016年06月07日 15:53
  • 542

关于图的遍历算法

前些天做算法设计实验,涉及到图的遍历的一些算法,由于数据结构是在去年学的,很多算法也有些记不清了,今天在网上看到了一篇好的博文,留作看吧. 转载自海子的: http://www.cnblogs.c...
  • u013518289
  • u013518289
  • 2015年11月28日 12:15
  • 2910
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1762: 算法7-4,7-5:图的遍历——深度优先搜索
举报原因:
原因补充:

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