Cod sursa(job #1108271)

Utilizator felixiPuscasu Felix felixi Data 15 februarie 2014 15:31:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream in("bfs.in");
ofstream out("bfs.out");

const int NMAX= 100000;

bool viz[NMAX+1];
int R[NMAX+1];
vector<int> d[NMAX+1];
queue<int> q;

int main()
{
    int N,M,S, a,b;
    in>>N>>M>>S;
    for(int i=0; i<M; i++){
        in>>a>>b;
        d[a].push_back(b);
    }
    q.push( S );
    R[S]= 1;
    while( !q.empty() ){
        int x= q.front();
        int lg= d[x].size();
        for(int i=0; i<lg; i++){
            if( R[ d[x][i] ] == 0 ){
                R[ d[x][i] ]= R[x]+1;
                q.push( d[x][i] );
            }
        }
        q.pop();
    }
    for(int i=1; i<=N; i++){
        R[i]--;
        out<<R[i]<<" ";
    }
    out<<'\n';
    in.close();
    out.close();
    return 0;
}