Cod sursa(job #2141958)

Utilizator SnokySlivilescu Vlad Snoky Data 24 februarie 2018 17:30:50
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

#define NMax 100005

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

int n, m, ap[NMax], S, L[NMax];
vector < int > v[NMax];
queue < int > q;
void BFS(int k)
{
    ap[k] = 1;
    q.push(k);
    L[k] = 0;
    while(!q.empty())
    {
        int x = q.front();
        for(int i = 0; i < v[x].size(); i++)
        {
            if(!ap[v[x][i]])
            {
                ap[v[x][i]] = 1;
                q.push(v[x][i]);
                L[v[x][i]] = L[x] + 1;
            }
        }
        q.pop();
    }
}
int main()
{
    fin >> n >> m >> S;
    for(int i = 1; i <= m; i++)
    {
        int x, y;
        fin >> x >> y;
        v[x].push_back(y);
    }
    for(int i = 1; i <= n; i++)
        L[i] = -1;
    BFS(S);
    for(int i = 1; i <= n; i++)
        fout << L[i] << " ";
}