Cod sursa(job #2636676)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 19 iulie 2020 10:29:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <queue>
#include <vector>
#include <cstring>
using namespace std;

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

vector<int> g[100005];
int n, m, s, dist[100005];

void citire() {
    fin >> n >> m >> s;
    while(m--) {
        int x, y;
        fin >> x >> y;
        g[x].push_back(y);
    }
}

void solve() {
    memset(dist, -1, sizeof dist);
    queue<int> q;
    q.push(s);
    dist[s] = 0;
    while(!q.empty()) {
        int curr = q.front();
        q.pop();

        for(auto next: g[curr])
        if(dist[next] == -1) {
            dist[next] = dist[curr]+1;
            q.push(next);
        }
    }
}

void afis() {
    for(int i = 1; i <= n; i++)
        fout << dist[i] << ' ';
}

int main() {
    citire();
    solve();
    afis();
}