Cod sursa(job #3165866)

Utilizator dariustgameTimar Darius dariustgame Data 7 noiembrie 2023 08:45:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <fstream>
#include <map>

using namespace std;

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

vector<int> graf[100001];

int n, m, s;
map<int, bool> visited;
int dist[100001];

queue<pair<int, int>> q;

int bfs()
{
    q.push({s, 0});
    visited[s] = true;
    int cNode, pas;
    while (!q.empty())
    {
        cNode = q.front().first;
        pas = q.front().second + 1;
        dist[cNode] = pas - 1;
        for (int i = 0; i < graf[cNode].size(); i++)
        {
            if (!visited.count(graf[cNode][i]))
            {
                visited[graf[cNode][i]] = true;
                q.push({graf[cNode][i], pas});
            }
        }
        q.pop();
    }
    return -1;
}

int main()
{
    fin >> n >> m >> s;
    int x, y;
    for (int i = 0; i < m; i++)
    {
        fin >> x >> y;
        graf[x].push_back(y);
    }
    for (int i = 1; i <= n; i++)
    {
        dist[i] = -1;
    }
    bfs();
    for (int i = 1; i <= n; i++)
    {
        fout << dist[i] << ' ';
    }
    return 0;
}