Cod sursa(job #2384804)

Utilizator SternulStern Cristian Sternul Data 21 martie 2019 10:41:29
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 curent, dist = 0;
    vector < int > D(graf.size(), -1);
    queue < int > q;
    q.push(sursa);
    D[sursa] = 0;
    while(!q.empty())
    {
        curent = q.front();
        q.pop();
        for(auto vecin : graf[curent])
        {
            if(D[vecin] > D[curent] + 1 || D[vecin] == -1)
            {
                D[vecin] = D[curent] + 1;
                q.push(vecin);
            }
        }
    }
    return D;
}

int main() {
    int N, M, S, x, y;
    ifstream f ("bfs.in");
    ofstream g("bfs.out");
    f>>N>>M>>S;
    S--;
    vector < vector < int > > G(N);
    for(int i = 0;i < M;i++)
    {
        f>>x>>y;
        x--;
        y--;
        G[x].push_back(y);
    }
    vector <int> rez = bfs(S, G);
    for(auto x : rez)
    {
        g<<x<<" ";
    }
    return 0;
}