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;
}

 

posted @ 2012-05-27 19:09  Naix_x  阅读(194)  评论(0)    收藏  举报