• PTA 7-6 列出连通集(深搜+广搜)


    给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。

    输入格式:

    输入第1行给出2个整数N(0<N10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。

    输出格式:

    按照{v1v2.....vk}的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。

    输入样例:

    8 6
    0 7
    0 1
    2 0
    4 1
    2 4
    3 5
    

    输出样例:

    { 0 1 4 2 7 }
    { 3 5 }
    { 6 }
    { 0 1 2 7 4 }
    { 3 5 }

    题意

    如上

    题解

    直接跑DFS深搜和BFS深搜,模板题,注意标记访问Vis

    代码

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int G[15][15],Vis[15];
     5 int n,m;
     6 void dfs(int u)
     7 {
     8     printf(" %d",u);
     9     for(int i=0;i<n;i++)
    10         if(!Vis[i]&&G[u][i])
    11             Vis[i]=1,dfs(i);
    12 }
    13 void bfs(int u)
    14 {
    15     queue<int> Q;
    16     Q.push(u);
    17     while(!Q.empty())
    18     {
    19         u=Q.front();Q.pop();
    20         printf(" %d",u);
    21         for(int i=0;i<n;i++)
    22             if(!Vis[i]&&G[u][i])
    23                 Vis[i]=1,Q.push(i);
    24     }
    25 }
    26 int main()
    27 {
    28     scanf("%d%d",&n,&m);
    29     for(int i=0;i<m;i++)
    30     {
    31         int u,v;
    32         scanf("%d%d",&u,&v);
    33         G[u][v]=G[v][u]=1;
    34     }
    35     memset(Vis,0,sizeof(Vis));
    36     for(int i=0;i<n;i++)
    37         if(!Vis[i])
    38         {
    39             printf("{");
    40             Vis[i]=1;
    41             dfs(i);
    42             printf(" }
    ");
    43         }
    44 
    45     memset(Vis,0,sizeof(Vis));
    46     for(int i=0;i<n;i++)
    47         if(!Vis[i])
    48         {
    49             printf("{");
    50             Vis[i]=1;
    51             bfs(i);
    52             printf(" }
    ");
    53         }
    54     return 0;
    55 }
  • 相关阅读:
    程序员修炼之道:从小工到专家--读书摘录
    代码规范--捡拾(SQL语句)
    新博客,新生活
    如何用Eclipse+maven创建servlet 3.0 web 项目
    swift -- 枚举
    swift -- 函数
    控制语句 for while if switch
    swift -- 字符串
    swift -- 集合
    swift -- 字典
  • 原文地址:https://www.cnblogs.com/taozi1115402474/p/8545383.html
Copyright © 2020-2023  润新知