Cod sursa(job #1026331)

Utilizator mcip1977Muresan Ciprian mcip1977 Data 11 noiembrie 2013 15:17:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct muchie
{
    int i,j;
};

vector<int> V[100001];//listele de adiacenta
int n,m;//noduri/muchii
int s; //vf de pornire
int p[100001];//vizitat/nevizitat

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

   }
}

void BF(int s)
{
    int st,dr,i,x[100001],j;
    int D[100001];
    for(i=1;i<=n;i++) D[i]=-1;
    st=dr=1;
    p[s]=1;
    x[1]=s;
    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++;
    }
    for(i=1;i<=n;i++) fout<<D[i]<<" ";
}

int main()
{
    citire();
    BF(s);
    fin.close();
    fout.close();
    return 0;
}