Cod sursa(job #1033857)

Utilizator Master011Dragos Martac Master011 Data 17 noiembrie 2013 15:53:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<vector>
#include<cstdio>
#include<queue>
using namespace std;

const int Lim = 100003;
vector<int> V[Lim];
queue<int> Q;
int dist[Lim];
int N,M,S;

void bfs(){
    dist[S]=1;
    Q.push(S);
    while(!Q.empty()){
        vector<int>::iterator it;
        for(it=V[Q.front()].begin() ; it<V[Q.front()].end(); it++)
            if(!dist[*it]){
                Q.push(*it);
                dist[*it]=dist[Q.front()]+1;
            }
        Q.pop();
    }
}

int main(){
    FILE *in=fopen("bfs.in","r");
    FILE *out=fopen("bfs.out","w");
    fscanf(in,"%d%d%d",&N,&M,&S);
    int a,b;
    for(int i = 1 ; i <= M ; ++i){
        fscanf(in,"%d%d",&a,&b);
        V[a].push_back(b);
    }
    fclose(in);
    bfs();
    for(int i = 1 ; i <= N ; ++i)
        fprintf(out,"%d ",dist[i]-1);
    fclose(out);
    return 0;
}