Cod sursa(job #2266008)

Utilizator scarlat_lucaLuca Scarlat scarlat_luca Data 22 octombrie 2018 00:43:20
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

ifstream fin  ("bfs.in");
ofstream fout("bfs.out");
vector <int>muchii[100005];
int distanta[100005];
queue <int> Coada;
int n,m;
void bfs()
{
    int nod,vecin;
    while(!Coada.empty())
    {
        nod=Coada.front();
        Coada.pop();
        for(int i=0;i<muchii[nod].size();i++)
        {
            vecin=muchii[nod][i];
            if(distanta[vecin] == -1)
            {
                Coada.push(vecin);
                distanta[vecin]=distanta[nod]+1;
            }
        }
    }
}

void citire()
{
    int nodstart;
    fin>>n>>m>>nodstart;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        fin>>x>>y;
        muchii[x].push_back(y);
    }
    for(int i=1;i<=n;i++)
    {
        distanta[i]=-1;
    }
    distanta[nodstart]=0;
    Coada.push(nodstart);
    bfs();
    for(int i=1;i<=n;i++)
        fout<<distanta[i]<<' ';
}
int main()
{
    citire();
return 0;
}