Cod sursa(job #2190075)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 29 martie 2018 19:32:01
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <vector>
#include <queue>
#include <cstdio>

using namespace std;

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    int s, n, m;
    cin >> n >> m >> s;
    --s;
    vector<int> out[n + 1];
    vector<int> distance(n, -1);
    distance[s] = 0;
    for(int i = 0; i < m; ++i)
    {
        int a, b;
        cin >> a >> b;
        out[--a].push_back(--b);
    }

    queue<int> q;
    q.push(s);
    while(!q.empty())
    {
        int vertex1 = q.front();
        for(int i = 0; i < out[vertex1].size(); ++i)
        {
            int vertex2 = out[vertex1][i];
            if(distance[vertex2] == -1)
            {
                q.push(vertex2);
                distance[vertex2] = distance[vertex1] + 1;
            }
        }
        q.pop();
    }

    for(int i = 0; i < n; ++i)
        cout << distance[i] << ' ';

    return 0;
}