Cod sursa(job #467898)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 1 iulie 2010 11:12:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

vector<int> V[100010];
queue<int> Q;
int C[100010];
int Lg[100010];
int N,M,S,i,x,y;
int main()
{
    in>>N>>M>>S;
    while(M--)
    {
        in>>x>>y;
        V[x].push_back(y);
        Lg[x]++;
    }
    Q.push(S);
    while(!Q.empty())
    {
        x = Q.front();
        Q.pop();
        for(i=0;i<Lg[x];i++)
        {
            if(!C[V[x][i]]&&V[x][i]!=S)
            {
                C[V[x][i]] = C[x] + 1;
                Q.push(V[x][i]);
            }
        }
    }
    for(i=1;i<=N;i++)
    {
        if(i==S)
            out<<"0 ";
        else
            if(C[i])
            out<<C[i]<<' ';
            else out<<"-1 ";
    }
    return 0;
}