Cod sursa(job #2384798)

Utilizator haginusAndrei Hagi haginus Data 21 martie 2019 10:33:01
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <list>

using namespace std;

vector<int> bfs(int s, vector<vector<int>> &g) {
    vector<int> dist(g.size(), g.size());
    queue<int> q;
    dist[s] = 0;
    q.push(s);
    while(!q.empty()) {
        int node = q.front();
        q.pop();
        for(auto u: g[node]) {
            if(dist[u] > dist[node] + 1) {
                dist[u] = dist[node] + 1;
                q.push(u);
            }
        }
    }
    return dist;
}

int main()
{
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    int n, m, s;
    fin >> n >> m >> s;
    int a, b;
    vector<vector<int>> ad(n + 1);
    for(int i = 0; i < m; i++) {
        fin >> a >> b;
        ad[a].push_back(b);
    }
    vector<int> res = bfs(s, ad);
    for(int i = 1; i <= n; i++) {
        if(res[i] == n + 1) fout << -1 << " ";
        else fout << res[i] << " ";
    }
    return 0;
}