图的深度遍历
来源:互联网 发布:淘宝上好的外贸店 编辑:程序博客网 时间:2024/06/06 01:53
题目描述
请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。
输入
输入第一行为整数n(0 < n < 100),表示数据的组数。 对于每组数据,第一行是两个整数k,m(0 < k < 100,0 < m < k*k),表示有m条边,k个顶点。 下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。
输出
输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果。
示例输入
14 40 10 20 32 3
示例输出
0 1 2 3
提示
#include <stdio.h>#include <stdlib.h>#include <string.h>int p[101][101];//标记边int o[101];//标记点int num[101];//存遍历完的点int z;void DFS(int k,int v){ int j; o[v] = 1; num[z++] = v; for(j = 0;j <= k-1;j++) { if(p[v][j] == 1 && o[j] == 0) { DFS(k,j); } }}int main(){ int n,k,m,u,v,i,j,t; scanf("%d",&n); while(n--) { memset(p,0,sizeof(p)); memset(o,0,sizeof(o)); memset(num,0,sizeof(num)); scanf("%d %d",&k,&m); z = 0; t = 0; for(i = 1;i <= m;i++) { scanf("%d %d",&u,&v); p[v][u] = 1; p[u][v] = 1; } for(i = 0;i <= k-1;i++) { for(j = 0; j <= k-1;j++) { if(p[i][j] == 1) { DFS(k,i); t = 1; break; } } if(t) break; } for(i = 0;i <= z-1 ;i++) { if(i != z - 1) printf("%d ",num[i]); else printf("%d\n",num[i]); } } return 0;}
0 0
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 前端设计之CSS布局:上中下三栏自适应高度CSS布局
- 网贷系统架构——前端框架的选择
- POJ 3274 Gold Balanced Lineup
- 模拟 - hdu5360 Hiking
- 表的基本操作
- 图的深度遍历
- 静态库和动态库
- matlab/C混合编程--mex文件的编写、编译、调用
- Sensu 简介
- android 中的Uri
- Linux专业名词
- 观察者设计模式
- Java的NIO之ByteBuffer底层分析
- git的中文教程