数据结构(18)——深度优先遍历
来源:互联网 发布:大数据就业前景怎么样 编辑:程序博客网 时间:2024/06/05 19:11
C - 深度优先遍历
Description
请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。
Input
输入第一行为整数n(0 < n < 100),表示数据的组数。 对于每组数据,第一行是两个整数k,m(0 < k < 100,0 < m < k*k),表示有m条边,k个顶点。 下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。
Output
输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果。
Sample Input
1
4 4
0 1
0 2
0 3
2 3
Sample Output
0 1 2 3
#include<string.h>#include <algorithm>using namespace std;int que[111], sum;int a[10101][10110];int vis[1111]; //标记是否走过void dfs(int u, int v){ que[sum++] = u; //一次存入每次可以通过的节点 vis[u] = 1; //标记为已走 for (int i = 0; i<v; i++) { if (a[u][i] == 1 && vis[i] == 0) //寻找与当前节点相连通并且未走的节点 { dfs(i, v); //que[sum++]=aim; //该语句可以存入原路返回的节点 } }}int main(){ int n, m, k; int i, j; scanf("%d", &n); while (n--) { scanf("%d%d", &k, &m); memset(a, 0, sizeof(a)); memset(vis, 0, sizeof(vis)); //初始化,所有定点均未走过 while (m--) { scanf("%d%d", &i, &j); a[i][j] = a[j][i] = 1; } sum = 0; dfs(0, k); for (i = 0; i<sum; i++) printf(i == sum - 1 ? "%d\n" : "%d ", que[i]); } return 0;}
1 0
- 数据结构(18)——深度优先遍历
- 数据结构——深度优先遍历和广度优先遍历
- 数据结构与算法专题之图——图的遍历(深度优先遍历和广度优先遍历)
- 数据结构—基于深度优先遍历算法的应用
- 数据结构(二) 深度优先遍历 DFS
- 数据结构之深度优先遍历
- 数据结构之深度优先遍历
- 图的遍历(一)—深度优先遍历
- 数据结构 - 图的深度优先遍历(C++)
- 数据结构(C实现)------- 图的深度优先遍历
- 数据结构与算法分析(Java语言描述)(27)—— 深度优先遍历与连通分量
- [数据结构]Graph之深度优先遍历(DFT)及广度优先遍历(BFT)
- 算法与数据结构(2) -- 二叉树深度优先遍历和广度优先遍历
- 数据结构---图的广度优先遍历和深度优先遍历
- 数据结构例程——应用图的深度优先遍历思路求解问题
- 数据结构实践——迷宫问题之图深度优先遍历解法
- 数据结构实践——迷宫问题之图深度优先遍历解法
- 数据结构实践——迷宫问题之图深度优先遍历解法
- android Bugs
- 火狐插件
- 卓有成效的沟通
- LeCun、Bengio和Hinton之深度学习综述(下)
- Maven setting.xml 详解
- 数据结构(18)——深度优先遍历
- Java 8中接口定义
- thinkphp5实践第1章——安装配置
- Linux C/C++ 多线程编程
- MATLAB学习笔记之-----图像写入硬盘与多曲线绘图
- 静态内部类
- 装饰者模式一染色馒头
- 大多数组织高层所需的软技能
- 各类公司之间的薪酬差异