Cod sursa(job #2664959)

Utilizator grezdeCristian Ardeleanu grezde Data 29 octombrie 2020 20:03:11
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

const int NMAX = 100003;
int n, m, s;
vector<vector<int>> a;

int dist[NMAX];
queue<int> q;

int main()
{
    ifstream cin("bfs.in");
    ofstream cout("bfs.out");

    cin >> n >> m >> s;
    a.reserve(n+1);
    for(int i=0; i<=n; i++) {
        a.push_back(vector<int>());
        dist[i]=-1;
    }
    int x, y;
    for(int i=1; i<=m; i++) {
        cin >> x >> y;
        a[x].push_back(y);
    }
    q.push(s);
    dist[s]=0;
    while(!q.empty()) {
        for(int con : a[q.front()])
            if(dist[con] == -1) {
                dist[con] = dist[q.front()]+1;
                q.push(con);
            }
        q.pop();
    }
    for(int i=1; i<=n; i++)
        cout << dist[i] << " ";

    return 0;
}