Cod sursa(job #1415697)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 5 aprilie 2015 20:30:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#include <queue>

#define NMAX 100007

using namespace std;

queue < int > q;
vector < int > v[NMAX];
int Viz[NMAX];
int n, m, Start, a, b;

int main(){
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    scanf("%d %d %d", &n, &m, &Start);
    q.push(Start);
    for(int i = 1; i <= m; ++i){
        scanf("%d %d", &a, &b);
        v[a].push_back(b);
    }
    Viz[Start] = 1;
    while(! q.empty()){
        int Nod = q.front();
        q.pop();
        for(int i = 0; i < v[Nod].size(); ++i)
            if(Viz[v[Nod][i]] == 0){
                q.push(v[Nod][i]);
                Viz[v[Nod][i]] = Viz[Nod] + 1;
            }
    }
    for(int i = 1; i <= n; ++i)
        printf("%d ", Viz[i] - 1);
    return 0;
}