赞
踩
首先我们需要知道什么是图
简单地说,图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的。例如上图是由五个顶点(编号为1,2,3,4,5)和五条边(1-2,1-3,1-5,2-4,3-5)组成。
接下来我将会展示从1号顶点以DFS算法遍历这张图的代码。
每个顶点是第几个被访问到的,这个数字,称为时间戳。(在本段代码里没有体现)
#include<stdio.h> int book[2000], a[2000][2000]; int sum, n, m; void dfs(int cur) { int i; printf("%d ", cur); sum++; if (sum == n) return; for (i = 1; i <= n; i++) { if (a[cur][i] == 1 && book[i] == 0) { book[i] = 1; dfs(i); } } return; } int main() { int i, j, m, x, y; scanf("%d %d", &n, &m); for (i = 1; i <= m; i++) { scanf("%d %d", &x, &y); a[x][y] = 1; a[y][x] = 1; } book[1] = 1; //从第一个点出发 dfs(1); return 0; }
运行结果:
这张图DFS遍历顺序为1 2 4 3 5
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。