Cod sursa(job #2924564)

Utilizator PatrascuAdrian1Patrascu Adrian Octavian PatrascuAdrian1 Data 5 octombrie 2022 11:18:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

const int Nmax = 1e5 + 5;
vector<int> G[Nmax];
int ans[Nmax];
bool seen[Nmax];
int N, M, start;

void bfs(int node)
{
    queue<pair<int,int>> Q;
    Q.push({node, 0});
    seen[node] = 1;
    while(!Q.empty())
    {
        int nod_cur = Q.front().first;
        int dist_cur = Q.front().second;
        ans[nod_cur] = dist_cur;
        for(auto i : G[nod_cur])
            if(!seen[i])
            {
                seen[i] = 1;
                Q.push({i, dist_cur + 1});
            }
        Q.pop();
    }
}

int main()
{
    in >> N >> M >> start;
    while(M--)
    {
        int x, y;
        in >> x >> y;
        G[x].push_back(y);
    }
    bfs(start);
    for(int i = 1; i <= N; ++i)
        out << (seen[i] ? ans[i] : -1) << " ";
    return 0;
}