Cod sursa(job #2379884)

Utilizator madamadamadamadaCIRSTEA IONELA-MADALINA madamadamadamada Data 14 martie 2019 10:54:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>


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

vector<int> BFS_distance (vector<vector<int>> G,int s,int n)
{
    vector<int> dist(n+1,n);

    queue <int> q;

    q.push(s);
    dist[s]=0;

    while (!q.empty())
    {
        int nod=q.front();
        q.pop();


        /*for(int i = 0; i < int(G[nod].size(); i++)
            int vecin = G[nod][i];*/

        for (int vecin: G[nod])
        {
            if (dist[vecin]>=n)
            {
                dist[vecin]=dist[nod]+1;
                q.push(vecin);
            }
        }

    }

    return dist;
}

int main()
{
    int n,m,s,x,y;

    f>>n>>m>>s;

    vector<vector<int>> G(n+1);

    for (int i = 0; i < m; i++)
    {
        f>>x>>y;
        G[x].push_back(y);
    }

    vector<int>dist;

    dist=BFS_distance(G,s,n);

    for (int i = 1; i <=n; i++)
        if (dist[i]==n)
            g<<-1<<" ";
        else
            g<<dist[i]<<" ";

    return 0;

}