Cod sursa(job #2383372)

Utilizator raduandreicaRadu Andreica raduandreica Data 19 martie 2019 13:16:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

vector< vector <int> > g;
int n,m;

void citire()
{
    for(int i=0 ; i<m ; i++)
    {
        int a, b;
        fin >> a >> b;
        g[a].push_back(b);
    }
}
vector <int> BFS(int s)
{
    vector <int> d(n+1,n);
    queue <int> q;
    d[s]=0;
    q.push(s);
    while(!q.empty())
    {
        int nod = q.front();
        q.pop();
        for(int i=0 ; i<g[nod].size() ; i++)
        {
            int vec = g[nod][i];
            if(d[vec]==n)
            {
                d[vec] = d[nod] +1;
                q.push(vec);
            }
        }
    }
    return d;
}
int main()
{
    int s;
    fin>>n>>m>>s;
    g = vector<vector<int > >(n + 1);
    citire();
    vector<int> a = BFS(s);
    for(int i=1 ; i<=n ; i++)
    {
        if (a[i] != n) fout << a[i] <<" ";
        else fout << -1 << " ";
    }
}