Cod sursa(job #2194242)

Utilizator Radu551Radu Besleaga Radu551 Data 12 aprilie 2018 17:35:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

vector<int> G[100002];
vector<int> dist;

queue<int> que;


void bfs(int s){
    que.push(s);
    dist[s] = 0;

    while(!que.empty()){
        int t =  que.front();
        for(int i = 0; i < G[t].size(); ++i){
            if(dist[t] + 1 < dist[G[t][i]]){
               dist[G[t][i]] =  dist[t] + 1;
               que.push(G[t][i]);
            }
        }
        que.pop();
    }

}

#define maxv 9999999

int main()
{

    int n,m,s,a,b;
    in >> n >> m >> s;


    dist.assign(n+1,maxv);

    for(int i = 0; i < m; i++){
        in >> a >> b;
        G[a].push_back(b);
    }

    bfs(s);

    for(int i = 1; i <= n; i++){
            if(dist[i] == maxv){
                out << -1 << " ";
            }else{
                out << dist[i] << " ";
            }
    }


    return 0;
}