Cod sursa(job #540039)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 23 februarie 2011 17:39:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <vector>

using namespace std;

vector <int> e[100001];
bool v[100001];
int q[100001],sol[100001],n,m,s,i,a,x,y,l,r;

int main()
{
    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",&x,&y);
        e[x].push_back(y);
    }
    v[s]=1;q[1]=s;r=1;
    for (l=1;l<=r;++l)
    {
        a=e[q[l]].size();
        for (i=0;i<a;++i)
            if (!v[e[q[l]][i]])
            {
                ++r;
                q[r]=e[q[l]][i];
                v[e[q[l]][i]]=1;
                sol[e[q[l]][i]]=sol[q[l]]+1;
            }
    }
    for (i=1;i<=n;++i)
        if ((i!=s)&&(!sol[i]))
            sol[i]=-1;
    for (i=1;i<=n;++i)
        printf("%d ",sol[i]);
    return 0;
}