Cod sursa(job #2425283)

Utilizator antracodsAntracod antracods Data 24 mai 2019 17:59:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

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


const int NMAX = 1e6+1;;
int n,m,s;
vector <int> MyGraf[NMAX];
queue<int> MyQueue;
int fv[NMAX];
int sol[NMAX];
void bfs(int start)
{

    MyQueue.push(start);
    fv[start]=1;
    sol[start]=1;
    while(MyQueue.empty()==false)
    {
        int node = MyQueue.front();
        MyQueue.pop();
        fv[node] = 1;
        int p = MyGraf[node].size();
        for(int i=0; i<p; i++)
        {

            int selected_node = MyGraf[node][i];

            if(sol[selected_node]==0)
            {
                MyQueue.push(selected_node);
                sol[selected_node] = sol[node] + 1;
            }

        }


    }
}

void citire()
{
    in>>n>>m>>s;
    for(int i=1; i<=m; i++)
    {
        int x,y;
        in>>x>>y;
        MyGraf[x].push_back(y);
    }

}

void afisare()
{
    for(int i=1; i<=n; i++)
    {
            out<<sol[i]-1<<" ";
    }
}


int main()
{
    citire();
    bfs(s);
    afisare();
    return 0;
}