Cod sursa(job #265966)

Utilizator ErgoVicol Sergiu Constantin Ergo Data 24 februarie 2009 19:50:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <queue>
#include <vector>


using namespace std;

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

#define NMAX 100010

int N, M, S, Sol[NMAX];
vector<int> G[NMAX];
queue<int> Q;

int main()
{
    int i, x, y, el;
    fin >>N >>M >>S;
    for (i = 1; i <= M; i++)
    {
        fin >>x >>y;
        G[x].push_back(y);
    }
    for (i = 1; i <= N; Sol[i] = -1, i++);
    Sol[S] = 0;
    Q.push(S);
    while (!Q.empty())
    {
        el = Q.front();
        Q.pop();
        for (i = 0; i < G[el].size(); i++)
            if (Sol[G[el][i]] == -1)
            {
                Sol[G[el][i]] = Sol[el] + 1;
                Q.push(G[el][i]);
            }
    }
    for (i = 1; i <= N; i++)
        fout <<Sol[i] <<' ';
    fout.close();
    return 0;
}