Cod sursa(job #1329320)

Utilizator lolmanDomuta Dariu lolman Data 29 ianuarie 2015 13:19:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string.h>
#include <algorithm>
#define inf 1<<31 -1
#define nmax 100001
using namespace std;
vector <int> vecin[nmax];
int cost [nmax], urmator, m,n,s,i,x,y;
queue <int> q;
void bfs()
   {
       while (!q.empty())
               {
                   int curent=q.front();
                   q.pop();

                   for (i=0;i<vecin[curent].size();i++)
                            {
                                urmator=vecin[curent][i];
                                if (cost[urmator] == inf)
                                          {
                                              cost[urmator]=cost[curent]+1;
                                              q.push(urmator);
                                          }
                            }

               }
   }
int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    f>>n>>m>>s;

    for (i=1;i<=m;i++)
         {
             f>>x>>y;
             vecin[x].push_back(y);
         }
    for (i=1;i<=n;i++)
           cost[i]=inf;
    cost[s]=0;
    q.push(s);
    bfs();
    for (i=1;i<=n;i++)
         {
             if(cost[i]==inf) cost[i]=-1;
             g<<cost[i]<<" ";
         }

    return 0;
}