Cod sursa(job #2785822)

Utilizator cezaradaDanciu Ana Cezara cezarada Data 19 octombrie 2021 16:39:33
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");


vector<vector<int>> edges;
vector<int> dist;

int readGraph()
{
    int n;
    in >> n;
    int m;
    in >> m;
    int s;
    in >> s;
    edges.resize(n);
    dist.resize(n, -1);
    for (int i = 0; i < m; i++)
    {
        int a, b;
        in >> a >> b;
        a--;
        b--;
        edges[a].push_back(b);
    }
    return s - 1;
}

void bfs(int node)
{
    queue <int> q;
    q.push(node);
    dist[node] = 0;

    while (q.empty() == 0)
    {
        node = q.front();
        q.pop();
        for (int i = 0; i < edges[node].size(); i++)
        {
            int next = edges[node][i];
            if (dist[next] == -1)
            {
                q.push(next);
                dist[next] = dist[node] + 1;;
            }
        }
    }
}

int main()
{
    int rad = readGraph();
    bfs(rad);
    for (int i = 0; i < edges.size(); i++)
    {
        out << dist[i] << " ";
    }
    return 0;
}