Cod sursa(job #2986981)

Utilizator acostin643costin andrei acostin643 Data 1 martie 2023 19:14:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

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

const int NMAX = 100000;

int N, M, src, x, y;
queue <int> q;
vector <int> g[NMAX + 5];
int rez[NMAX + 5];
bool visited[NMAX + 5];

int main()
{
    fin >> N >> M >> src;
    for(int i = 1; i <= M; i++)
    {
        fin >> x >> y;
        g[x].push_back(y);
    }

    q.push(src);
    visited[src] = 1;
    while(!q.empty())
    {
        int nod = q.front();
        visited[nod] = 1;
        q.pop();
        for(auto y : g[nod])
        {
            if(!visited[y])
            {
                visited[y] = 1;
                rez[y] = rez[nod] + 1;
                q.push(y);
            }
        }
    }

    for(int i = 1; i <= N; i++)
    {
        if(visited[i])
            fout << rez[i] << " ";
        else if(!visited[i])
            fout << "-1 ";
    }

    fin.close();
    fout.close();
    return 0;
}