Cod sursa(job #2098100)

Utilizator IustinPetrariuIustinian Petrariu IustinPetrariu Data 2 ianuarie 2018 13:23:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <vector>
#include <fstream>
#define nmax 100010
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,L,start;
int Stiva[nmax],ans[nmax],G[nmax];
vector < int > A[nmax];
void BFS(int nod)
{
    for(int i =1 ; i <= n ; i++)
         ans[i]=-1;
     L=1;
     Stiva[L]=nod;
     ans[nod]=0;
     for(int i =1; i <= L; i ++)
         for(int j = 0 ; j < G[Stiva[i]]; j ++)
          if(ans[A[Stiva[i]][j]]==-1)
     {
         Stiva[++L]=A[Stiva[i]][j];
         ans[Stiva[L]]=ans[Stiva[i]]+1;
     }
}
int main()
{
       int x,y;
      fin>>n>>m>>start;
      for(int i = 1; i <= m ; i ++)
      {
          fin>>x>>y;
          A[x].push_back(y);
      }
       for(int i = 1; i <= n ; i++)
         G[i]=A[i].size();
       BFS(start);
       for(int i =1; i <= n ; i++)
         fout<<ans[i]<<" ";
    return 0;
}