Sunday, April 3, 2011

10959 - The Party, Part I


#include<iostream>
#include<cstdio>
#include<queue>
#include<vector>
#define M 1000
using namespace std;

int list[M][M];

int main()
{
    register int t,i,j,h,a,b,d,p;
    int D[M],color[M];
    queue<int>Q;
    //freopen("in.txt","r",stdin);

    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&p,&d);

        for(i=0;i<p;i++)
            for(j=0;j<p;j++)
                list[i][j]=0;

        for(i=0;i<d;i++)
        {
            scanf("%d%d",&a,&b);
            list[a][b]=list[b][a]=1;
        }

        for(i=0;i<p;i++)
            color[i]=0;

        Q.push(0);D[0]=0;color[0]=1;

        while(!Q.empty())
        {
            h=Q.front();
            for(i=0;i<p;i++)
            {
                if(list[h][i])
                {
                    if(color[i]==0)
                    {
                        color[i]=1;
                        D[i]=D[h]+1;
                        Q.push(i);
                    }
                }
            }
            Q.pop();
            color[h]=2;
        }
        for(i=1;i<p;i++)
            printf("%d\n",D[i]);
        if(t)
            printf("\n");
    }
    return 0;
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.