Cod sursa(job #854257)

Utilizator Aida_SilviaStrimbeanu Aida Silvia Aida_Silvia Data 13 ianuarie 2013 00:56:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include<vector>

using namespace std;

int c[100073],viz[100073];
vector <int> v[100073];
int s;




void bfs()
{
    int j=1,x=1;
    c[x]=s;

    while (x<=j)
    {
        for (int i=0;i<v[c[x]].size();++i)
        if (!viz[v[c[x]][i]]&& v[c[x]][i]!=c[x])
            {
                j++;
                viz[v[c[x]][i]]=viz[c[x]]+1;
                c[j]=v[c[x]][i];
            }

     x++;
     }
    }


int main()
{

    int m,n,x,y;

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

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

    for (int i=0;i<m;i++)
    {
        scanf("%d%d",&x,&y);
        v[x].push_back(y);
    }

    bfs();

    for (int i=1;i<=n;i++)
        if (viz[i] && i!=s)
            printf("%d ",viz[i]);
        else if (i==s)
                printf("0 ");
        else printf("-1 ");
}