zoukankan      html  css  js  c++  java
  • SDUT2139图结构练习——BFS——从起始点到目标点的最短步数

    #include <bits/stdc++.h>
    using namespace std;
    #define maxn 10086
    int num[maxn]; //记录到n结点的最短距离
    int Map[maxn][maxn]; //记录结点的连通性
    int vis[maxn]; //记录是否已遍历过改结点
    int Now[maxn]; //储存已遍历的结点
    int n,m;
    int BFS(int k)
    {
        memset(vis,0,sizeof(vis));
        memset(Now,0,sizeof(Now));
        memset(num,1061109567,sizeof(num));
        int ss = 0,ee =0;
        Now[ss++] = k;//保存头结点
        vis[k] = 1; //标记当前结点已经被访问过
        num[k] = 0; //初始化为0
        while(ss>ee)
        {
            int now = Now[e++]; //得到队列的首元素
            for(int i=n;i>=1;i--)
            {
                if(Map[now][i]==1 && vis[i]==0) //当前结点与i结点连通 && 没有遍历过
                {
                    Now[ss++] = i; 将i结点存入队列
                        vis[i] = 1; //标记遍历过
                num[i] = num[i]<num[now]?num[i]:num[now]+1;
                //若i节点此前到n节点的距离<当前节点到n节点的距离,num[i]不变;
                 }                                            //否则,i节点到n节点的距离 = num[now]+1;


                }
            }
        }
         if(num[1]==1061109567)
            printf("NO\n");
         else
            printf("%d\n",num[1]);
     }
     int main()
     {
         int u,v;
         while(~scanf("%d %d",&n,&m))
         {
             memset(Map,0,sizeof(Map));
             for(int i=0;i<m;i++)
             {
                 scanf("%d %d",&u,&v);
                 Map[u][v]=1;
             }
             BFS(n);//从n开始查找;
         }
     }
  • 相关阅读:
    Linux下文件权限的设置
    JavaEE中一些缩写的含义
    Xcode7.1环境下上架iOS App到AppStore 流程 转
    iOS UILabel UITextView自适应文本,或文本大小自适应
    Xcode常用快捷键总结
    iOS9的新特性以及适配方案-----转载
    Python下读取转换unicode的json格式
    python pip 不能用报错: ImportError: No module named _internal
    Python获取二维数组的行列数
    Python作用域
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/6444552.html
Copyright © 2011-2022 走看看