Cod sursa(job #2224456)

Utilizator theoioanaTheodoraD theoioana Data 24 iulie 2018 01:16:36
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
#define DIM 100010

using namespace std;

int main(){

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

    int n, m, s;
    fin >> n >> m >> s;

    vector <int> adjaency[DIM];

    int visited[DIM], distances[DIM], current[DIM];
    int x, y;

    for( int i = 0; i < m; i++){
        fin >> x >> y;
        adjaency[x].push_back(y);
    }

    for( int i = 0; i < n; i++){
        sort(adjaency[i].begin(), adjaency[i].end());
    }

    current[1] = s;
    visited[s] = 1;
    distances[s] = 1;
    int p = 1;
    int u = 1;

    while( p <= u ){
        int nod = current[p];
        for( int i = 0; i < adjaency[nod].size(); i++){
            int neigh = adjaency[nod][i];
            if( visited[neigh] == 0 ){
                visited[neigh] = 1;
                current[++u] = neigh;
                distances[neigh] = 1 + distances[nod];
            }
            p++;
        }
    }

    for( int i = 0; i < n; i++ ){
        fout << -1 + distances[i] << " ";
    }

    return 0;
}