Cod sursa(job #1192919)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 30 mai 2014 10:30:12
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;
int lg[100009] ,i,n,m,s,x,y;
vector<int> G[100009];
queue<int> q;
bool sel[100009];
vector <int> :: iterator it;


void bfs(int nod)
{

   q.push(nod);
   sel[nod]=true;

   while(!q.empty())
   {
      x=q.front();

      for(it=G[x].begin();it!=G[x].end();++it)
      if(!sel[*it])
      {
         sel[*it];
         q.push(*it);
         lg[*it]=lg[x]+1;
      }

      q.pop();
   }




}


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);

       G[x].push_back(y);


    }


     for(i=1;i<=n;++i)
    lg[i]=-1;

     lg[s]=0;
    bfs(s);




    for(i=1;i<=n;++i)
    printf("%d ",lg[i]);





    return 0;
}