SDUT 2141数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

   题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2141

   这个题听虎哥给讲的,开始自己想的时候老是以为BFS就必须得用递归,这个题的思路没有想象的那么复杂啊。

 

#include<stdio.h>

#include<string.h>

int p[101][101],ans[101],o[101];

int main()

{

    int a,b,c,d,i,j,k,m,n;

    scanf("%d",&a);

    while(a--)

    {

        memset(ans,0,sizeof(ans));

        memset(o,0,sizeof(o));

        scanf("%d%d%d",&b,&c,&d);

        ans[1] = d;

        m = 1;

        n = 1;

        o[d] = 1;

        for(i = 1; i <= c; i ++)

        {

            scanf("%d%d",&j,&k);

            p[j][k] = 1;

            p[k][j] = 1;

        }

        while(m != b)

        {

            k=1;

            for(i = n; i <= m; i ++)

            {

                for(j = 0; j <= b-1; j ++)

                {

                    if(o[j] == 0 && p[ans[i]][j] == 1)

                    {

                        ans[m+k] = j;

                        k ++;

                        o[j] = 1;

                    }

                }

            }

            n = m+1;

            m = m+k-1;

        }

        for(i = 1; i <= b; i ++)

        {

            if(i == 1)

                printf("%d",ans[i]);

            else

                printf(" %d",ans[i]);

        }

        printf("\n");

    }

    return 0;

}

 

你可能感兴趣的:(数据结构)