zoukankan      html  css  js  c++  java
  • ppt 图的基本算法 Bfs

     

    输入:

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

    // 图的BFS,使用C++队列
    #include <stdio.h>
    #include <string.h>
    #include <queue>
    using namespace std;
    #define N 10
    int g[N][N],bz[N],n,m;
    queue <int> q;
    void BFS(int cur)
    { int j;
    bz[cur]=1; q.push(cur);
    while (!q.empty())
    { cur=q.front(); printf(" V%d ", cur);q.pop();
    for (j=1;j<=N;j++)
    if (bz[j]==0 && g[cur][j]==1) { q.push(j); bz[j]=1; }
    }
    }
    void input()
    { int i,j,f,t;
    scanf("%d%d",&n,&m);
    for (int i=1; i<=m; i++)
    { scanf("%d%d",&f,&t); g[f][t]=g[t][f]=1; }
    }
    int main()
    { memset(g,0,sizeof(g)); memset(bz,0,sizeof(bz));
    input(); BFS(1);
    }

    *************************************************************************************


    // 图的BFS
    #include <stdio.h>
    #include <string.h>
    #define N 10
    int g[N][N],bz[N],n,m,q[N],qe,qs;
    void BFS(int cur)
    { int j,qs,qe;
    qs=qe=0; bz[cur]=1; q[qe++]=cur;
    while (qs<qe)
    { cur=q[qs++]; printf(" V%d ", cur);
    for (j=1;j<=N;j++)
    { if (bz[j]==0 && g[cur][j]==1)
    { q[qe++]=j; bz[j]=1; }
    }
    }
    }
    void input()
    { int i,j,f,t;
    scanf("%d%d",&n,&m);
    for (int i=1; i<=m; i++)
    { scanf("%d%d",&f,&t); g[f][t]=g[t][f]=1; }
    }
    int main()
    { int i,j;
    memset(g,0,sizeof(g)); memset(bz,0,sizeof(bz));
    input(); BFS(1);
    }

  • 相关阅读:
    记长连接压测总结
    PHP装扩展
    LMbench安装&使用
    Scala学习笔记-2-(if、while、for、try、match)
    Gatling学习笔记-Scenario(场景)
    Java之路---Day05
    Java之路---Day04
    Java之路---Day03
    Java之路---Day02
    Java之路---Day01
  • 原文地址:https://www.cnblogs.com/2014acm/p/3903256.html
Copyright © 2011-2022 走看看