Cod sursa(job #540856)

Utilizator alex@ndraAlexandra alex@ndra Data 24 februarie 2011 15:38:17
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
// PARCURGERE IN LATIME

#include<fstream>
#include<vector>

using namespace std;
#define Nmax 100000

vector<int> G[Nmax];

int n, m, s, cost[Nmax],c[Nmax],i, x, y, li, ls, vecini;

void citire()
{
     ifstream f("bfs.in");
       f>>n>>m>>s;
       
     for(i=1;i<=m;i++)
        {
          f>>x>>y;
          G[x].push_back(y);
        }
     f.close();
     
     for(i=1;i<=n;i++)
       cost[i]=-1;
}

void bfs(int nod)
{
   li=1;ls=1;
   c[li]=nod; cost[nod]=0;
   
   
   while(li<=ls)
   {
     vecini=G[c[li]].size();
     
     for(i=0;i<vecini;i++)
       if(cost[G[c[li]][i]]==-1)
         {
           ls++;
           c[ls]=G[c[li]][i];
           cost[c[ls]]=cost[c[li]]+1;
         }
     li++;
     }
}   
   
void afisare()
{
     int i;
     ofstream g("bfs.out");
     
     for(i=1;i<=n;i++)
        g<<cost[i]<<" ";
     
     g.close();
     }
               
int main()
{
    citire();
    bfs(s);
    afisare();
    
    return 0;
}