Cod sursa(job #407091)

Utilizator MESAROSLaura Mesaros MESAROS Data 2 martie 2010 00:26:13
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include<fstream>
#include<vector>

using namespace std;
 vector<int> A[100001];
 int n,m,i,k,cost[100001],viz[100001],c[100001];

 
 void citire()
 {  int x,y;
     ifstream f("bfs.in");
     f>>n>>m>>k;
     
     for(i=0;i<=n;i++)
         cost[i]=-1;
        
     for(i=1;i<=m;i++)
        { f>>x>>y;
              A[x].push_back(y);
              }
       f.close();}  
   
  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()
   {    ofstream g("bfs.out");
         for(i=1;i<=n;i++)
         g<<cost[i]<<" ";
         
         g.close();
         }
  int main()
  { citire();
 bfs(k);
afisare();
  system("pause");
  return 0;
      }