Cod sursa(job #2763850)

Utilizator NeuerRaducu Ioan Stefan Neuer Data 17 iulie 2021 11:33:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
///#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
const int SIZE = 1e5+10;

using namespace std;

ifstream cin("bfs.in");
ofstream cout("bfs.out");

int n, m, start;
vector <int> v[SIZE], dist;

void readit()
{
    int x, y;
    cin>>n>>m>>start;
    dist.resize(n+1);
    for(int i=1; i<=n; i++) dist[i]=-1;
    dist[start]=0;
    for(int i=0; i<m; i++)
        cin>>y>>x,
        v[y].push_back(x);
}

void BFS(int nod)
{
    queue <int> bfsq;
    bfsq.push(nod);
    while(!bfsq.empty())
    {
        nod=bfsq.front();
        bfsq.pop();
        for(int i=0; i<v[nod].size(); i++)
            if(dist[v[nod][i]]==-1)
                dist[v[nod][i]]=dist[nod]+1,
                bfsq.push(v[nod][i]);
    }
}

int main()
{
    readit();
    BFS(start);
    for(int i=1; i<dist.size(); i++)
        cout<<dist[i]<<' ';
    return 0;
}