Cod sursa(job #2256359)

Utilizator vulpixbSilvasan Bogdan vulpixb Data 8 octombrie 2018 15:58:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <queue>
#include <vector>

#define NMAX 100005

using namespace std;

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

queue <int> q;
vector <int> v[NMAX];

int cost[NMAX];
bool viz[NMAX];
int n, m, s, i, x, y, inc, sf;


int main() {
    fin >> n >> m >> s;
    for (i=1; i<=m; i++)
    {
        fin >> x >> y;
        v[x].push_back(y);
    }

    q.push(s);
    viz[s] = true;
    cost[s]=0;
    while (!q.empty())
    {
        inc = q.front();
        int nrvecini = v[inc].size();
        for (i=0; i<nrvecini; i++)
        {
            if (!viz[v[inc][i]])
            {
                viz[v[inc][i]] = true;
                q.push(v[inc][i]);
                sf = q.back();
                cost[sf] = cost[inc]+1;
            }
        }
        q.pop();
    }

    for (i=1; i<=n; i++)
    {
        if (!viz[i])
            fout << "-1 ";

        else
            fout << cost[i] << " ";
    }

    return 0;
}