基于邻接矩阵的深度优先搜索遍历

基于邻接矩阵的深度优先搜索遍历

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

请定一个无向图,顶点编号从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的遍历结果。

示例输入

1
4 4
0 1
0 2
0 3
2 3

示例输出

0 1 2 3

代码:
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdlib>
 4 #include<queue>
 5 using namespace std;
 6 int map[101][101],visited[101];
 7 int m,n,k,flag;
 8 void dfs(int k)
 9 {
10     if(flag)
11         cout<<" "<<k;
12     else
13     {
14         cout<<k;
15         flag=1;
16     }
17     visited[k]=1;
18     int i;
19     for(i=0;i<=m-1;i++)
20         if(map[k][i]==1&&visited[i]==0)
21             dfs(i);
22 }
23 int main()
24 {
25     int zong;
26     cin>>zong;
27     while(zong--)
28     {
29         flag=0;
30         memset(map,0,sizeof(map));
31         memset(visited,0,sizeof(visited));
32         cin>>m>>n;
33         int i;
34         for(i=1;i<=n;i++)
35         {
36             int u,v;
37             cin>>u>>v;
38             map[u][v]=1;
39             map[v][u]=1;
40         }
41         dfs(0);
42         cout<<endl;
43     }
44     return 0;
45 }
View Code

 

posted @ 2013-08-07 11:42  狂盗一枝梅  阅读(431)  评论(0编辑  收藏  举报