Cod sursa(job #394843)

Utilizator ZeKalangaCiocan Alin ZeKalanga Data 11 februarie 2010 18:12:40
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.42 kb
#include <iostream>

using namespace std;


int m,n,s,mat[1000][1000],v[1000];

void citire()
{

    scanf("%d%d%d",&n,&m,&s);

    for(int i=1;i<=m;i++)
        for(int j=1;j<=m;j++)
           {
                  mat[i][j]=0;
           }


    for(int i=1;i<=m;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);

            mat[x][y]=1;

        }


}



void latime()
{

    struct coada
    {
        int c,inf;
    }cod[1000];

    int viz[1000]={0},p,u;

    for(int i=1;i<=n;i++)
        {
            if(s!=i)
                v[i]=-1;
        }

    cod[0].inf=0;

    u=p=0;

    cod[p].c=s;

    viz[s]=1;

    while(p<=u)
        {
            for(int i=1;i<=n;i++)
                {
                    if(!viz[i]&&mat[cod[p].c][i])
                        {
                            viz[i]=1;
                          //  printf("%d ",i);
                            u++;
                            cod[u].c=i;
                            cod[u].inf=cod[p].inf+1;
                        }
                }

            p++;
        }

    for(int i=1;i<=n;i++)
        {
            v[cod[i].c]=cod[i].inf;
        }
     for(int i=1;i<=n;i++)
        printf("%d ",v[i]);



}


int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    citire();

    latime();





    return 0;
}