Cod sursa(job #2419454)

Utilizator CameliaSSamoilescu Camelia CameliaS Data 8 mai 2019 17:09:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

#define NMAX 100005



vector <int> graph[NMAX];
queue <int> coada;
int n, m, s, lungime[NMAX], viz[NMAX];


void citire()
{
    f>>n>>m>>s;
    for(int i = 0; i < m; i ++)
    {
        int a,b;
        f>>a>>b;
        graph[a].push_back(b);
    }

}

void BFS()
{
    for(int i = 1; i <= n; i ++)
        lungime[i] = -1;
    lungime[s] = 0;
    viz[s] = 1;
    coada.push(s);
    while(!coada.empty())
    {
        int nod = coada.front();
        coada.pop();

        for(int i = 0; i < graph[nod].size(); i ++)
        {
            int vecin = graph[nod][i];
            if(!viz[vecin])
            {
                coada.push(vecin);
                viz[vecin] = 1;
                lungime[vecin] = lungime[nod] + 1;
            }
        }

    }

}

void afisare()
{

    for(int i = 1; i <= n; i ++)
        g<< lungime[i] << " ";

}
int main()
{
    citire();
    BFS();
    afisare();
    return 0;
}