Cod sursa(job #2705174)

Utilizator vlad_butnaruVlad Butnaru vlad_butnaru Data 12 februarie 2021 08:31:56
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
vector <int> v[100001];
int dist[100001];
int N , M, S;
void bfs (int nod)
{
    queue <int> q;
    q.push(nod);
    dist[nod] = 0;
    while (!q.empty())
    {
        int place = q.front();
        q.pop();
        for (int i = 0; i<v[place].size(); ++i)
        {
            int new_nod = v[place][i];
            if (dist[new_nod] == -1)
            {
                dist[new_nod] = dist[place] + 1;
                q.push(new_nod);
            }
        }
    }
}
int main ()
{
    in >> N >> M >> S;
    for (int i = 1; i<=M; ++i)
    {
        int a, b;
        in >> a >> b;
        v[a].push_back(b);
    }
    for (int i = 1;i<=N;++i)
        dist[i] = -1;
    bfs(S);
    for (int i = 1;i<=N;++i)
        out<<dist[i]<<'\n';
    return 0;
}