zoukankan      html  css  js  c++  java
  • 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    分析:有向图里面找最短路径,原理就是每一步都走距离自己最近的路, 一旦发现走一步可以到,那么这个一定是最短的。

    #include <bits/stdc++.h>
    
    using namespace std;
    struct node
    {
        int step;
        int data;
    }l,w;
    int vis[1002];
    int gra[1002][1002];
    int n, m, u, v;
    void bfs(int s)
    {
        vis[s] = 1;
        w.data = s;
        w.step = 0;
        struct node q[100000];
        int in = 0, out = 0;
        q[in++] = w;
        while(in > out)
        {
            w = q[out ++];
            if(w.data == 1){
                printf("%d
    ",w.step);
                return ;
            }
            for(int i = 1; i <= n; i ++){
                if(!vis[i] && gra[w.data][i]){
                    l.data = i;
                    l.step = w.step + 1;
                    q[in++] = l;
                }
            }
        }
        printf("NO
    ");
    }
    int main()
    {
    
        while(~scanf("%d%d", &n, &m))
        {
            memset(gra, 0, sizeof(gra));
            memset(vis, 0, sizeof(vis));
            while(m--)
            {
                scanf("%d %d", &u, &v);
                gra[u][v] = 1;
            }
            bfs(n);
        }
        return 0;
    }
    
    
    
    
  • 相关阅读:
    C++赌博游戏
    数据挖掘--数据准备
    非线性维归约Isomap
    ClampedCubicSpline
    Romberg算法
    列表与数组
    HttpClient调用webApi时注意的小问题
    Week4
    Week3
    Week2
  • 原文地址:https://www.cnblogs.com/lcchy/p/10139427.html
Copyright © 2011-2022 走看看