Cod sursa(job #1877396)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 13 februarie 2017 12:11:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

constexpr int maxn = 1e5 + 100, maxv = 1e6 + 100;

ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> vec[maxn];
int dist[maxn], deq[maxn], *fr = deq, *bk = deq;

void bfs(const int start){
    dist[start] = 0;
    *bk++ = start;
    while(fr != bk){
        const int cur = *fr++;
        for(const auto next : vec[cur])
            if(dist[next] > dist[cur] + 1)
                dist[next] = dist[cur]+1, *bk++ = next; } }

int main(){
    int n, m, s;
    f >> n >> m >> s;
    memset(dist, 0x3f, sizeof(dist));
    for(int i = 0, x, y; i < m; ++i){
        f >> x >> y;
        vec[x].push_back(y); }
    bfs(s);
    replace(dist, dist+maxn, 0x3f3f3f3f, -1);
    copy_n(dist+1, n, ostream_iterator<int>(g, " "));
    return 0; }