Cod sursa(job #2746624)

Utilizator MihaiZ777MihaiZ MihaiZ777 Data 28 aprilie 2021 09:35:47
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;

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

vector <int> g[100005];
queue <int> q;
int dist[100005];

void BFS()
{
    while (!q.empty())
    {
        int node = q.front();
        int val = dist[node];

        for (int ngb : g[node])
        {
            if (dist[ngb] == 0)
            {
                dist[ngb] = val + 1;
                q.push(ngb);
            }
        }
        q.pop();
    }
}


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

    for (int i = 0; i < m; i++)
    {
        int x, y;
        fin >> x >> y;

        g[x].push_back(y);
    }

    q.push(s);
    dist[s] = 1;
    BFS();

    for (int i = 1; i <= n; i++)
    {
        int val = dist[i];
        if (i == s && val == 1)
        {
            fout << 0 << ' ';
        }
        else if (val == 1)
        {
            fout << -1 << ' ';
        }
        else
        {
            fout << val - 1 << ' ';
        }
    }
    return 0;
}