Cod sursa(job #403358)

Utilizator butabuta radu gabriel buta Data 24 februarie 2010 21:24:42
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
 #include <fstream>
#include <vector>
using namespace std;

vector <int> A[100001];

int c[100001],vizitat[100001],n,m,k,i,cost[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, vizitat[nod]=1, cost [nod]=0;
      
      
      while(li<=ls)
      {
                   nr_vecini=A[c[li]].size();
      for(i=1;i<=n;i++)
        if(vizitat[A[c[li]][i]]==1)
        {   ls++;
        c[ls]=A[c[li]][i];
        vizitat[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();
    return 0;
}