Cod sursa(job #2662335)

Utilizator miramaria27Stroie Mira miramaria27 Data 23 octombrie 2020 21:41:53
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <deque>
#include <list>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
void bfs(int start, int c[], vector < list<int>> ad, vector<int> paths,int n)
{
    int S=1, L=1;
    while(S<=L)
    {

        int parent =  c[S];
        for(auto &i: ad[parent])
        {

            if( paths[i] == -1)
            {

                paths[i] = paths[parent] + 1;
                c[++L] = i;
            }

        }
        S++;


    }
     for(int i = 1; i<=n; i++)
        fout<<paths[i]<<" ";


}



int main()
{
    int n,m,start;
    fin>>n>>m>>start;
    vector <list <int>> ad(n+1);

    for(int i = 0; i < m; i ++)
    {

        int x,y;
        fin >> x >> y;
        ad[x].push_back(y);

    }

    vector <int> paths(n+1,-1);
    paths[start] = 0;
    int c[n+1];
    c[1] = start;
    bfs(start,c,ad,paths,n);

    return 0;
}