Cod sursa(job #551634)

Utilizator dragoostoicadragos stoica dragoostoica Data 10 martie 2011 21:59:18
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>
#include<vector>
 
using namespace std;
#define Nmax 100000

vector<int> G[Nmax];

long 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;
}