Cod sursa(job #403312)

Utilizator butabuta radu gabriel buta Data 24 februarie 2010 20:32:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>

using namespace std;

vector <int> A[100001];

int c[100001],viz[100001],n,m,k,i,cost[100001];

void citeste_graf()
{    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()
{
    citeste_graf();
    bfs(k);
    afisare();
    return 0;
}