Cod sursa(job #857022)

Utilizator ilenitudorIleni Tudor ilenitudor Data 17 ianuarie 2013 09:53:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include<vector>
using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int s,n,m,x[100003],d[100003],p[100003];
vector<int>v[1000000];

void Read()
{
    int x,y;
    fin>>n>>m>>s;
    for(int i=1 ; i<=m ; i++)
    {
        fin>>x>>y;
        v[x].push_back(y);
    }
}

void bf(int s)
{
    int i,st,dr,j;
    st=dr=1;
    x[1]=s;
    p[s]=1;
    d[s]=0;
    while(st<=dr)
    {
        for(i=0 ; i < v[x[st]].size() ; i++)
        {
        j = v[x[st]][i];

        if(!p[j])
        {
            dr++;
            x[dr]=j;
            p[j]=1;
            d[j] = d[x[st]] +1;
        }

        }
        st++;
    }

}

int main()
{
    Read();
    bf(s);

    for(int i=1 ; i<=n ; i++)
    {
    if(d[i] || i==s)
    fout<<d[i]<< " ";
    else  if(d[i]==0 && i!=s)
    fout<<-1<<" ";
    }

    fin.close();
    fout.close();
    return 0;
}