Cod sursa(job #2380009)

Utilizator KronkAlexandru M. Kronk Data 14 martie 2019 13:00:04
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
#define n_max 1000005
using namespace std;
int viz[n_max], n, m, dist[n_max], s;

vector <int> graf[n_max];
queue <int> coada;

void BF(int x)
{
    int i;
    viz[x] = 1;
    coada.push(x);
    while(!coada.empty())
    {
        x = coada.front();
        coada.pop();
        int dim = graf[x].size();
        for(i = 0; i <= dim - 1; i++)
            {
                int vecin = graf[x][i];
                if(!viz[vecin])
                {
                    viz[vecin] = 1;
                    dist[vecin] = dist[x] + 1;
                    coada.push(vecin);
                }
            }
    }
}
int main()
{
    int i, j;
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    fin >> n >> m >> s;
    for(i = 1; i <= m; i++)
    {
        int x, y;
        fin >> x >> y;
        graf[x].push_back(y);
    }
    BF(s);
    for(i = 1; i <= n; i++)
        if(viz[i] != 0)
            fout << dist[i] << " ";
        else fout <<"-1 ";
    return 0;
}