Cod sursa(job #916336)

Utilizator ionutpPala Ionut ionutp Data 16 martie 2013 12:59:00
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#include<vector>

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

vector<int> V[100001];
int P[100001], X[100001], H[100001];
int N, M, S;
void Read()
{
    fin >> N >> M >> S;
    for(int i = 1; i <= M; i++)
    {
        int x, y;
        fin >> x >> y;
        V[x].push_back(y);
    }
}
void BFS(int k)
{
    int s, d;
    s = 1;
    d = 1;
    P[k] = 1;
    X[s] = k;
    while(s <= d)
    {
        for(int i = 0; i < V[X[s]].size(); i++)
        {
            int j = V[X[s]][i];
            if(P[j] == 0)
            {
                d++;
                X[d] = j;
                P[j] = 1;
                H[j] = H[X[s]] + 1;
            }
        }
        s++;
    }

}
void Write()
{
    for(int i = 1; i <= N; i++)
    {
        if(P[i] == 0)
        fout << "-1" << " ";
        else
        fout << H[i] << " ";
    }
}
int main()
{
    Read();
    BFS(S);
    Write();
    fin.close();
    fout.close();
    return 0;
}