zoukankan      html  css  js  c++  java
  • 邻接矩阵的宽度遍历

    sdut 2141  

     1 #include<stdio.h>   
     2 #include<string.h>   
     3 int mapp[110][110],vis[110],que[110],flag;   
     4 int k,m,t;   
     5 void bfs(int t)   
     6 {   
     7     int l=0,r=0,tt,j;   
     8     que[r++]=t;   
     9     while(l<r)   
    10     {   
    11         tt=que[l++];   
    12         if(flag==1)   
    13         {   
    14             flag=0;   
    15             printf("%d",tt);   
    16   
    17         }   
    18         else  
    19             printf(" %d",tt);   
    20         for(j=0;j<k;j++)   
    21         {   
    22             if(!vis[j]&&mapp[tt][j])   //找到一个与tt相连的点并进栈。
    23             {   
    24                 que[r++]=j;   
    25                 vis[j]=1;   
    26             }   
    27         }   
    28   
    29     }   
    30 }   
    31 int main ()   
    32 {   
    33     int n,i,a,b;   
    34     scanf("%d",&n);   
    35     while(n--)   
    36     {   
    37         memset(vis,0,sizeof(vis));   
    38         memset(mapp,0,sizeof(mapp));   
    39         scanf("%d %d %d",&k,&m,&t);//k个顶点,m条边,t为遍历的初始点顶点。  
    40         for(i=0;i<m;i++)   
    41         {   
    42             scanf("%d %d",&a,&b);   
    43             mapp[a][b]=mapp[b][a]=1;   
    44         }   
    45         flag=1;   //控制是否输出空格。
    46         vis[t]=1;   
    47         bfs(t);   
    48         printf("\n");   
    49     }   
    50     return 0;   
    51 }   

    宽度搜索是采用队列的形式,队首出队,将与队首相邻的点进队。

    深度搜索是递归的过程,

  • 相关阅读:
    命令[34]
    命令[33]
    命令[27]
    命令[38]
    命令[19]
    命令[22]
    命令[30]
    命令[37]
    命令[23]
    命令[26]
  • 原文地址:https://www.cnblogs.com/LK1994/p/2990990.html
Copyright © 2011-2022 走看看