Cod sursa(job #2388246)

Utilizator gabriel-mocioacaGabriel Mocioaca gabriel-mocioaca Data 25 martie 2019 20:06:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

#define cin in
#define cout out

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

vector<vector<int>> graph;
vector<int> dist;
vector<bool> vis;

void bfs(int start){
    queue<pair<int,int>> q;

    q.push({start, 0});
    vis[start] = true;

    while(!q.empty()){
        pair<int,int> x = q.front();
        q.pop();

        int node = x.first;
        int d = x.second;

        dist[node] = d;

        for(auto neigh : graph[node]){
            if (!vis[neigh]){
                vis[neigh] = true;
                q.push({neigh,d + 1});
            }
        }
    }

}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);

    int n, m, s, x, y;
    cin >> n >> m >> s;

    graph.resize(n + 1);
    dist.resize(n + 1, -1);
    vis.resize(n + 1, false);

    while(m--){
        cin >> x >> y;
        graph[x].push_back(y);
    }

    bfs(s);

    for(int i = 1; i <= n; ++i)
        cout << dist[i] << ' ';
}