Cod sursa(job #540878)

Utilizator alex@ndraAlexandra alex@ndra Data 24 februarie 2011 15:51:47
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
// PARCURGERE IN LATIME

#include<fstream>
#include<vector>

using namespace std;
#define Nmax 100001

vector<int> G[Nmax];

long n, m, s, cost[Nmax],c[Nmax];

void citire()
{
     int i, x, y;
     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)
{
   int i, vecini,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;
}