Cod sursa(job #640345)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 25 noiembrie 2011 14:51:40
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100002
#define oo (1<<30)

using namespace std;

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

vector<int> V[NMAX];
vector<int>::iterator it,sf;
queue<int> Q;
int D[NMAX],M,N,S;

inline int _min(int a,int b){if(a<b)return a;return b;}

int main()
{
    int x,y;
    in>>N>>M>>S;
    while(M--)
    {
        in>>x>>y;
        V[x].push_back(y);
    }
    fill(D+1,D+N+1,oo);
    for(Q.push(S),D[S]=0;!Q.empty();Q.pop())
    {
        x = Q.front();
        for(it=V[x].begin(),sf=V[x].end();it<sf;++it)
        {
            y = *it;
            if(D[y]>D[x]+1)
            {
                D[y] = D[x]+1;
                Q.push(y);
            }
        }
    }
    for(x=1;x<=N;x++)
        out<<(D[x]==oo?-1:D[x])<<' ';
    return 0;
}