Cod sursa(job #407089)

Utilizator MESAROSLaura Mesaros MESAROS Data 2 martie 2010 00:23:11
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include<fstream>
#include<vector>
#include<stdio.h>
using namespace std;
 vector<int> A[100001];
 int n,m,i,k,cost[100001],viz[100001],c[100001];

 
 void citire()
 {  int x,y;
     freopen("bfs.in","r",stdin);
     scanf("%d%d%d",&n,&m,&k);
     
     for(i=0;i<=n;i++)
         cost[i]=-1;
        
     for(i=1;i<=m;i++)
        { scanf("%d%d",&x,&y);
              A[x].push_back(y);
              }
       fclose(stdin);}  
   
  void bfs(int nod)
  { int li,ls,nr_vecini;
     li=1,ls=1;
     c[li]=nod,viz[nod]=1,cost[nod]=0;
     while(li<=ls)
     {
                  nr_vecini=A[c[li]].size();
              for(i=0;i<nr_vecini;i++)
              if(viz[A[c[li]][i]]==0)
              { 
                 ls++;
                 c[ls]=A[c[li]][i];
                viz[A[c[li]][i]]=1; 
                cost[A[c[li]][i]]=cost[c[li]]+1;
                }
                     li++;
                     }                   
  
       }
  
  
  
  
  
  
   void afisare()
   {    freopen("bfs.out","w",stdout);
         for(i=1;i<=n;i++)
         printf("%d ",cost[i]);
         
         fclose(stdout);
         }
  int main()
  { citire();
 bfs(k);
afisare();
  system("pause");
  return 0;
      }