2107-图的深度遍历
来源:互联网 发布:java开发在公司任务 编辑:程序博客网 时间:2024/05/19 00:17
图的深度遍历
Time Limit: 1000MS Memory Limit: 65536KB
SubmitStatistic Discuss
Problem 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的遍历结果。
Example Input
14 40 10 20 32 3
Example Output
0 1 2 3
#include<iostream>#include<string.h>//memset函数头文件 using namespace std;int vis[100];//访问标志数组 int Map[100][100];//邻接矩阵 int n,k,m,u,v;void DFS(int p) //深度遍历 { for(int i = 0; i < k; i++) //k个顶点依次遍历,顶点编号从0到k-1 { if(vis[i]==0 && Map[p][i]!=0) //此顶点未被访问,并且该顶点和其他顶点有边 { vis[i] = 1; //访问标志 cout << " " << i; //访问输出 DFS(i); //以新的节点作为根继续深度遍历 } } } int main() { cin >> n; //n组数据 while(n --) { memset(Map, 0, sizeof(Map)); //数组初始化为0 memset(vis, 0, sizeof(vis)); //数组初始化为0 cin >> k >> m; //顶点数,边数 while(m --) //m条边 { cin >> u >> v; //u,v顶点连接一条边 Map[u][v] = Map[v][u] = 1; //无向边,故是两条;将有边的置1 } cout << Map[0][0]; //访问第一个顶点 vis[0] = 1; //置1,证明已经访问 DFS(0);//从第一个顶点开始进行深度遍历 cout << endl; } return 0; }
阅读全文
1 0
- 2107 图的深度遍历
- 2107 图的深度遍历
- 2107-图的深度遍历
- 2107图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- 图的深度遍历
- HDU 6106 Classes -逻辑题-2017多效联盟6 第11题
- 静态代码块,构造代码块,普通代码块-三者的执行顺序及区别
- HDU1024 Max Sum Plus Plus ——dp
- 快速生成文档注释快捷键
- 高德地图api的自定义地点标注
- 2107-图的深度遍历
- 将tomcat注册为服务
- 用户画像的入门(转自CDC)
- hdu 1686 Oulipo (KMP裸题)
- 接口测试—-工具篇,实现接口自动化
- K
- 照片墙
- hdu 6096 String
- AdapterViewFlipper 自动播放图片(幻灯片效果)