Cod sursa(job #1395413)

Utilizator andytosaAndrei Tosa andytosa Data 21 martie 2015 11:36:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>
#define inf 1<<30
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> v[100010];
queue<int> coada;
int frec[100010],n,m,start,i,a,b,dest,lung;
int main()
{
    fin>>n>>m>>start;
    for(i=0;i<m;++i){
        fin>>a>>b;
        v[a].push_back(b);
    }
    for(i=1;i<=n;++i)
        frec[i] = inf;
    frec[start] = 0;
    coada.push(start);
    while(!coada.empty()){
        a = coada.front();
        coada.pop();
        lung = v[a].size();
        for(i=0;i<lung;++i){
            dest = v[a][i];
            if(frec[dest] > frec[a] + 1){
                frec[dest] = frec[a] + 1;
                coada.push(dest);
            }
        }
    }
    for(i=1;i<=n;++i)
        if(frec[i] == inf)
            fout<<"-1 ";
        else
            fout<<frec[i]<<" ";
    return 0;
}