啊哈!图的深度优先遍历

原创 2015年07月07日 20:10:18
#include <stdio.h>

int book[101], sum, n, e[101][101];

void dfs(int cur)//cur为当前所在的顶点编号
{
	int i;
	printf("%d ", cur);

	sum++;//每次访问一个顶点,suam+1
	if (sum == n) return;//所有顶点都访问完
	for (i = 1; i <= n; i++)
	{
		if (e[cur][i] == 1 && book[i] == 0)
		{
			book[i] = 1;
			dfs(i);
		}
	}
	return;
}

int main()
{
	int i, j, m, a, b;

	printf("输入顶点的数目: ");
	scanf("%d", &n);
	printf("输入边的数目: ");
	scanf("%d", &m);
	for (i = 1; i<= n; i++)
		for (j = 1; j <= n; j++)
		{
			if (i == j) 
				e[i][j] = 0;
			else
				e[i][j] = 99999999;//假设99999999为无穷大
		}
	//读入边
	for (i = 1; i<= m; i++)
	{
		printf("输入两个相邻的顶点(空格隔开):");
		scanf("%d %d", &a, &b);
		e[a][b] = 1;
		e[b][a] = 1;//这里为无向图
	}
	//从1号顶点出发
	book[1] = 1;
	dfs(1);

	getchar();
	getchar();
	return 0;
}




深度优先遍历的主要思想是:首先以一个未被走过的顶点作为起始顶点,沿着当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有的顶点都被访问过。


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

第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
  • 732

啊哈算法 城市地图(图的深度优先遍历)

#include #include #define INF 100000 int map[100][100];//存图 int book[100];//标记 int stack[100];//当前...
  • ccDLlyy
  • ccDLlyy
  • 2016年10月16日 09:14
  • 518

dfs之图的遍历——城市地图

我不是很清楚这个相不相当于最短路问题。 题目: 输入第一行表示有n个城市,m条马路。 接下来m行是类似于a b c这样的数据,表示有一条路可以从城市a到b,且路程为c公里。 需要注意的是这里的...
  • ACMer_hades
  • ACMer_hades
  • 2015年02月01日 17:20
  • 793

图的遍历(一)—深度优先遍历

图就是由一些顶点和连接这些顶点的边组成的。 例如上图就是由5个顶点(1、2、3、4、5)和5条边(1-2、1-3、1-5、2-4、3-5)组成。 我们从1号顶点开始遍历这个图,遍历就是把图的每...
  • wtyvhreal
  • wtyvhreal
  • 2015年01月30日 12:54
  • 4319

图——应用图的深度优先遍历思路求解问题

/* *Copyright (c) 2015 , 烟台大学计算机学院 *All right resvered . *文件名称: 应用图的深度优先遍历思路求解问题.cpp ...
  • zzh_569754126
  • zzh_569754126
  • 2015年11月22日 11:19
  • 1403

图深度优先遍历邻接矩阵表示

#include using namespace std; const int INF = 9999; int book[101],sum,n,e[101][101]; void dfs(in...
  • u012967763
  • u012967763
  • 2016年07月24日 11:34
  • 1468

图的遍历之-DFS深度优先遍历C++实现

深度优先遍历的思想: 沿着图的某一个分支遍历直到末端,然后回溯,再沿着另一条进行同样的遍历,直到所有的顶点都被访问过为止:首先以一个未被访问过的顶点作为起始顶点,沿着当前顶点的边走未访问过的顶点;当...
  • u012577585
  • u012577585
  • 2015年04月14日 20:27
  • 523

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

转载自http://blog.csdn.net/jnu_simba/article/details/8867687 算法:图的深度优先遍历(Depth First Sea...
  • weinierzui
  • weinierzui
  • 2014年04月15日 20:52
  • 3407

数据结构:图的遍历--深度优先、广度优先

图的遍历是指从图中的某一顶点出发,按照一定的策略访问图中的每一个顶点。当然,每个顶点有且只能被访问一次。 在图的遍历中,深度优先和广度优先是最常使用的两种遍历方式。这两种遍历方式对无向图和有向图都是适...
  • zhangxiangDavaid
  • zhangxiangDavaid
  • 2014年08月02日 11:20
  • 36157

图的深度优先搜索遍历(邻接表&邻接矩阵,递归&非递归)(C++)

图的深度优先搜索遍历可有递归和迭代两种方法。递归的方式比较容易,每次以当前节点的未被访问的邻接节点为新的出发点去遍历即可,编程的时候注意维护好全局的访问标记以及访问序列即可(可以以引用的方式传递)。非...
  • zhujiahui622
  • zhujiahui622
  • 2016年08月09日 14:26
  • 928
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:啊哈!图的深度优先遍历
举报原因:
原因补充:

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