Cod sursa(job #360101)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 29 octombrie 2009 19:16:34
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<vector>
#include<stdio.h>

using namespace std;
int n,m,s,a,b,x[100001],viz[100001],d[100001];

vector <long> v[100001];
int main ()
{
    int i,sf,in;
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&s);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&a,&b);
        v[a].push_back(b);
        v[b].push_back(a);
    }
    x[1]=s;
    in=1;sf=1;
    while(sf>=in)
    {
        for(i=0;i<v[in].size();i++)
            if(viz[v[in][i]]==0)
            {
                x[++sf]=v[in][i];
                viz[v[in][i]]=v[in][i];
                d[v[in][i]]=d[x[i]]+1;;
            }
        in++;
    }
    for(i=1;i<=n;i++)
        if(d[i]==0 && i!=s)
            printf("-1 ");
        else
           printf("%d ",d[i]);
    printf("\n");
    return 0;
}