Cod sursa(job #3208662)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 29 februarie 2024 11:32:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int NMAX = 1e5;
vector <int> graph[NMAX + 5];
queue <int> q;
int dp[NMAX + 5];

void bfs(int source)
{
    q.push(source);

    while(!q.empty())
    {
        int node = q.front();
        q.pop();

        for(auto neigh : graph[node])
        {
            if(dp[neigh] == -1 or dp[neigh] > dp[node] + 1)
            {
                dp[neigh] = dp[node] + 1;
                q.push(neigh);
            }
        }
    }
}

int main()
{
    int n, m, s;
    fin >> n >> m >> s;

    for(int i = 1; i <= m; i++)
    {
        int u, v;
        fin >> u >> v;
        graph[u].push_back(v);
    }

    for(int i = 1; i <= n; i++)
        dp[i] = -1;
    dp[s] = 0;

    bfs(s);

    for(int i = 1; i <= n; i++)
        fout << dp[i] << ' ';

    fin.close();
    fout.close();
    return 0;
}