Cod sursa(job #694488)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 27 februarie 2012 21:18:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<cstdio>
#include<vector>
#include<queue>

using namespace std;

#define Nmax 100001

int N, M, S, D[Nmax];
vector<int> G[Nmax];
queue<int> Q;

void BF(int S) {
    int nod;
    fill(D+1,D+N+1,-1);
    D[S]=0;
    Q.push(S);
    while(!Q.empty()) {
        nod=Q.front();
        for(vector<int>:: iterator it=G[nod].begin(); it!=G[nod].end(); ++it)
            if(D[*it]==-1) {
                D[*it]=D[nod]+1;
                Q.push(*it);
            }
        Q.pop();
    }
}

int main() {
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    int i, j;

    scanf("%d %d %d",&N,&M,&S);
    while(M--) {
        scanf("%d %d",&i,&j);
        G[i].push_back(j);
    }
    BF(S);
    for(i=1; i<=N; i++)
        printf("%d ",D[i]);
    printf("\n");

    return 0;
}