Cod sursa(job #2797394)

Utilizator Angel2IonitaAngel Ionita Angel2Ionita Data 9 noiembrie 2021 20:28:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <vector>
#include <fstream>
#include <queue>

using namespace std;

ifstream f("bfs.in");
ofstream o("bfs.out");
class Graph
{
public:
    vector<vector<int>> adjList;
    int size;
    Graph(int n)
    {
        size = n + 1;
        adjList.resize(size);
    }
    void addEdge(int start, int end)
    {
        adjList[start].push_back(end);
    }
    void BFS(int node)
    {
        vector<int> Cost;
        queue<int> Q;
        for (int i = 1; i <= size; i++)
            Cost.push_back(-1);
        Cost[node] = 0;
        Q.push(node);
        while (!Q.empty())
        {
            node = Q.front();
            Q.pop();
            for (auto i : adjList[node])
                if (Cost[i] == -1)
                {
                    Cost[i] = Cost[node] + 1;
                    Q.push(i);
                }
        }
        for (int i = 1; i <= size - 1; i++)
            o << Cost[i] << " ";
    }
};

int main()
{

    int n, m, s;
    int x, y;
    f >> n >> m >> s;
    Graph g(n);
    for (int i = 1; i <= m; i++)
    {
        f >> x >> y;
        g.addEdge(x, y);
    }
    g.BFS(s);

    return 0;
}