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


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

    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
  • 相关阅读:
    课堂检测求一个数的各个位
    猜数字
    登录界面
    课后作业01
    java语言基础问题
    大道至简第一张用java撰写伪代码
    阅读“大道至简”的读后感
    iOS 瀑布流的基本原理
    iOS 生成二维码
    CNContact对通讯录的基本使用(第二篇)
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/3242790.html
Copyright © 2020-2023  润新知