zoukankan      html  css  js  c++  java
  • pat05-图1. List Components (25)

    05-图1. List Components (25)

    时间限制
    200 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    For a given undirected graph with N vertices and E edges, please list all the connected components by both DFS and BFS. Assume that all the vertices are numbered from 0 to N-1. While searching, assume that we always start from the vertex with the smallest index, and visit its adjacent vertices in ascending order of their indices.

    Input Specification:

    Each input file contains one test case. For each case, the first line gives two integers N (0<N<=10) and E, which are the number of vertices and the number of edges, respectively. Then E lines follow, each described an edge by giving the two ends. All the numbers in a line are separated by a space.

    Output Specification:

    For each test case, print in each line a connected component in the format "{ v1 v2 ... vk }". First print the result obtained by DFS, then by BFS.

    Sample Input:
    8 6
    0 7
    0 1
    2 0
    4 1
    2 4
    3 5
    
    Sample Output:
    { 0 1 4 2 7 }
    { 3 5 }
    { 6 }
    { 0 1 2 7 4 }
    { 3 5 }
    { 6 }
    

    提交代码

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<queue>
     6 #include<vector>
     7 #include<string>
     8 using namespace std;
     9 bool map[15][15];
    10 bool vis[15];
    11 queue<int> q;
    12 int n,e;
    13 void DFS(int a){
    14     q.push(a);
    15     vis[a]=true;
    16     int i;
    17     for(i=0;i<n;i++){
    18         if(!vis[i]&&map[a][i]){
    19             DFS(i);
    20         }
    21     }
    22 }
    23 void BFS(int a){
    24     queue<int> qq;
    25     qq.push(a);
    26     q.push(a);
    27     vis[a]=true;
    28     int i;
    29     while(!qq.empty()){
    30         a=qq.front();
    31         qq.pop();
    32         for(i=0;i<n;i++){
    33             if(!vis[i]&&map[a][i]){
    34                 vis[i]=true;
    35                 q.push(i);
    36                 qq.push(i);
    37             }
    38         }
    39     }
    40 }
    41 int main(){
    42     //freopen("D:\INPUT.txt","r",stdin);
    43     int a,b;
    44     int i;
    45     scanf("%d %d",&n,&e);
    46     memset(map,false,sizeof(map));
    47     memset(vis,false,sizeof(vis));
    48     for(i=0;i<e;i++){
    49         scanf("%d %d",&a,&b);
    50         map[a][b]=map[b][a]=true;
    51     }
    52     for(i=0;i<n;i++){
    53         if(!vis[i]){
    54             DFS(i);
    55             if(!q.empty()){
    56                 printf("{");//{ 0 1 4 2 7 }
    57                 while(!q.empty()){
    58                     printf(" %d",q.front());
    59                     q.pop();
    60                 }
    61                 printf(" }
    ");
    62             }
    63         }
    64     }
    65     memset(vis,false,sizeof(vis));
    66     for(i=0;i<n;i++){
    67         if(!vis[i]){
    68             BFS(i);
    69             if(!q.empty()){
    70                 printf("{");//{ 0 1 4 2 7 }
    71                 while(!q.empty()){
    72                     printf(" %d",q.front());
    73                     q.pop();
    74                 }
    75                 printf(" }
    ");
    76             }
    77         }
    78     }
    79     return 0;
    80 }
  • 相关阅读:
    第二阶段总结
    傻子都会app与学习通
    天工疼憨仔组项目评审
    第一阶段意见
    冲刺(十)
    冲刺(九)
    冲刺(八)
    冲刺(七)
    后Hadoop时代的大数据架构
    ZooKeeper典型使用场景一览
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4748252.html
Copyright © 2011-2022 走看看