Cod sursa(job #2976724)

Utilizator Elvis_CostinTuca Elvis-Costin Elvis_Costin Data 9 februarie 2023 21:45:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string np = "bfs";
ifstream f(np + ".in");
ofstream g(np + ".out");

// #define f cin
// #define g cout

int n, m, s;
const ll INF = 1e16L;
vector<ll> d;
vector<int> adj[100003];

void bfs(int nod)
{
    d.assign(n + 1, INF);
    d[nod] = 0;
    queue<int> q;
    q.push(nod);
    while (!q.empty())
    {
        int curr = q.front();
        q.pop();
        for (auto next : adj[curr])
            if (d[next] > d[curr] + 1)
                d[next] = d[curr] + 1,
                q.push(next);
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    f.tie(nullptr);

    f >> n >> m >> s;
    for (int a, b; f >> a >> b;)
        adj[a].push_back(b);

    bfs(s);

    for (int i = 1; i <= n; i++)
        if (d[i] == INF)
            g << "-1 ";
        else
            g << d[i] << " ";

    return 0;
}