Cod sursa(job #2167951)

Utilizator vladbatalanBatalan Vlad vladbatalan Data 14 martie 2018 08:26:41
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define NMAX 100010

using namespace std;

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

const int oo = 1000000000;
int n, m, s, x, y, d[NMAX], top;
bool viz[NMAX];
vector<int> v[NMAX];
queue<int> coada;

int main()
{
    fin >> n >> m >> s;
    for(int i=1; i<=n; i++) d[i]=oo;
    for(int i=1; i<=m; i++)
    {
        fin >> x >> y;
        v[x].push_back(y);
    }
    d[s]=0;
    coada.push(s);
    while(!coada.empty())
    {
        top = coada.front();
        viz[top] = 1;
        for(auto vec:v[top])
        {
            if(!viz[vec])
            {
                coada.push(vec);
                d[vec] = min(d[top] + 1, d[vec]);
            }
        }
        coada.pop();
    }
    for(int i=1; i<=n; i++){
        if(d[i] == oo)
            fout<<-1<<' ';
        else
            fout<<d[i]<<' ';
    }
    return 0;
}