Cod sursa(job #841331)

Utilizator FayedStratulat Alexandru Fayed Data 24 decembrie 2012 00:22:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

vector <int> V[100005];
int q[100005];
int G[100005],cost[1000005];
int n,m,s;
int in = 1,sf = 1;
ifstream f("bfs.in");
ofstream g("bfs.out");

void bfs(int nod){

q[sf] = nod;
cost[nod] = 0;
    while(in <= sf){
        for(int j=0;j<G[q[in]];j++){
            if(cost[V[q[in]][j]] == -1){
                q[++sf] = V[q[in]][j];
                cost[q[sf]] = cost[q[in]]+1;
            }
        }
in++;
}
}

int main(){

int x,y;
f >> n >> m >> s;
for(int i=1;i<=m;i++){
    f >> x >> y;
     V[x].push_back(y);
}

for(int i=1;i<=n;i++)
G[i] = V[i].size();

for(int i=1;i<=n;i++)
   cost[i] = -1;

bfs(s);

for(int i=1;i<=n;i++)
g << cost[i] << " ";
f.close();
g.close();
return 0;
}