Cod sursa(job #1561449)

Utilizator geni950814Geni Geni geni950814 Data 4 ianuarie 2016 06:56:11
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>
#include <deque>
#include <vector>
#include <iostream>

using namespace std;

int N, M, S;
vector<vector<int>> V;
vector<int> sol;
deque<int> dq;

int main() {

    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    
    scanf("%d %d %d", &N, &M, &S);

    int fst, snd;
    
    for(int i = 0; i <= N; i++) {
        V.push_back(vector<int>(0));
        sol.push_back(-1);
    }

    for(int i = 0; i < M; i++) {
        scanf("%d %d", &fst, &snd);
        if(fst != snd && snd != S) {
            //V[fst][0]++;
            V[fst].push_back(snd);
        }
    }
    
    dq.push_back(S);
    sol[S] = 0;

    while(!dq.empty()) {
        int curr = dq.front();
        dq.pop_front();
        //int n = V[curr][0];
        //for(int i = 1; i <= n; i++) {
        for(int e : V[curr]) {
            //int e = V[curr][i];
            dq.push_back(e);
            sol[e] = sol[curr]+1;
        }
    }
   
    for(int i = 1; i <= N; i++) {
        printf("%d ", sol[i]);
    }

    return 0;
}