BFS SDUT 图结构练习——BFS——从起始点到目标点的最短步数

fro < re 然后用结构体记录上一步的步数。
 
View Code
图结构练习——BFS——从起始点到目标点的最短步数

#include<stdio.h>
#include<string.h>
int map[1005][1005];
struct node
{
    int i;
    int count;
} q[2005];
int pro[1005];
int fro;
int re;
int main()
{
    int d,e,s,i,j,a,b,t;
    while(scanf("%d %d",&d,&e) != EOF)
    {
        memset(map,0,sizeof(map));
        memset(pro,0,sizeof(pro));
        for(i = 0;i < e;i++)
        {
            scanf("%d %d",&a,&b);
            map[a][b] = 1;
        }

        fro = 0;
        re = 0;
        pro[d] = 1;
        q[re].count = 0;
        q[re++].i = d;
        int leap = 1;

        while(fro < re)
        {
            int num;
            int v;
            v = q[fro].i;
            num = q[fro].count;
            fro++;

            pro[v] = 1;
            for(i = 1;i <= d;i++)
            {
                if(map[v][i] == 1 && !pro[i])
                {
                    q[re].i = i;
                    q[re].count = num+1;
                    if(i == 1)
                    {
                        leap = 0;
                        break;
                    }
                    re++;
                    pro[i] = 1;
                }
            }
            if(!leap)
            break;
        }
        if(leap)
        puts("NO");
        else
        printf("%d\n",q[re].count);
    }

    return 0;
}
原文地址:https://www.cnblogs.com/0803yijia/p/2612402.html