Cod sursa(job #2416471)

Utilizator Galatanu_BogdanGalatanu Bogdan Ioan Galatanu_Bogdan Data 27 aprilie 2019 16:37:50
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <queue>
#include <fstream>
#define NMAX 100000
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int n,m,s;
vector <int>Edge[NMAX];
queue<int>coada;
int Distanta[NMAX];
void citire()
{
    in >> n >> m >> s;
    for(int i = 1; i <= m; i++)
    {
        int x, y;
        in >> x >> y;
        Edge[x].push_back(y);
    }
    for(int i = 1; i <= n; i++)
        Distanta[i] = -1;
    Distanta[s] = 0;
    coada.push(s);
    
}

void bfs()
{
    int Nod,Vecin;
    while (!coada.empty()) {
        Nod=coada.front();
        coada.pop();
        for(int k=0;k<Edge[Nod].size();k++)
        {
            //cout<<"EDGESIZE= "<<Edge[Nod].size()<<endl;
            Vecin=Edge[Nod][k];
            if(Distanta[Vecin]==-1)
               {
                   coada.push(Vecin);
                   Distanta[Vecin]=Distanta[Nod] + 1;
               }
            
        }
                            }
    
}
int main()
{
    citire();
    bfs();
    for(int i=1;i<=n;i++)
        out<<Distanta[i]<<" ";
    
    return 0;
    
    
}