Cod sursa(job #2671950)

Utilizator killerdonuttudor nicolae killerdonut Data 12 noiembrie 2020 21:21:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

const int N_MAX = 100005;

vector <int> graph[N_MAX];
queue <int> q;
vector <int> visitedTime;


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

void BFS(int start)
{
    q.push(start);
    visitedTime[start] = 0;

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

        for(auto neighbor: graph[head])
        {
            if(visitedTime[neighbor] != -1)
            {
                continue;
            }

            q.push(neighbor);
            visitedTime[neighbor] = visitedTime[head] + 1;
        }

        q.pop();
    }
}

int main()
{
    int n, m, x;

    fin >> n >> m >> x;

    visitedTime.resize(n + 1);
    fill(visitedTime.begin(), visitedTime.end(), -1);

    for(int i = 0, st, dr; i < m; i++)
    {
        fin >> st >> dr;
        graph[st].push_back(dr);
    }


    BFS(x);

    for (int i = 1; i <= n; i++) {
        fout << visitedTime[i] << " ";
    }


    return 0;
}