• 数据结构实验之图论五:从起始点到目标点的最短步数(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;
    }
    
    
    
    
  • 相关阅读:
    java实现同步的两种方式
    JAVA线程概念
    XML基础总结
    JAVA使用和操作properties文件
    JAVA序列化基础知识
    easyui 在编辑状态下,动态修改其他列值。
    Activiti初学问题,求解
    java web--DOM
    java web(1)
    Java WEB
  • 原文地址:https://www.cnblogs.com/lcchy/p/10139427.html
Copyright © 2020-2023  润新知