Cod sursa(job #2384805)

Utilizator boguklMirzea Bogdan bogukl Data 21 martie 2019 10:42:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;

 vector<int> bfs(int sursa, vector < vector<int> >graf,int n)
{
    vector <int>dist(n+1,n);
    queue <int>q;
    dist[sursa]=0;
    q.push(sursa);
    while(!q.empty())
    {
        int nod=q.front();
        q.pop();
        for(auto u:graf[nod])
            if(dist[u]>dist[nod]+1)
            {
                dist[u]=dist[nod]+1;
                q.push(u);
            }
    }
    return dist;
}
int main()
{

    int n,m,s;
    ifstream in("bfs.in");
    ofstream out("bfs.out");
    in>>n>>m>>s;

    vector < vector<int> >graf(n+1);
    for(int i=0;i<m;i++)
    {
        int a,b;
        in>>a>>b;
        graf[a].push_back(b);

    }

    vector<int>dist=bfs(s,graf,n);
    for(int i=1;i<=n;i++)
        if(dist[i]>n-1)
            out<<-1<<' ';
        else
            out<<dist[i]<<' ';
    return 0;
}