Cod sursa(job #1838239)

Utilizator sorynsooSorin Soo sorynsoo Data 31 decembrie 2016 15:14:09
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("bfs.in");
ofstream cout("bfs.out");

#define INF 0x3f3f3f3f
#define MAXN 100005

vector<int> graf[MAXN];
int d[MAXN];
int n, m, start;

void bfs(int nod) {
    for(int j=0; j<graf[nod].size(); j++) {
        if( d[ graf[nod][j] ] > d[ nod ] + 1  ) {
            d[ graf[nod][j] ] = d[ nod ] + 1;
            bfs( graf[nod][j] );
        }
    }
}

int main() {
    int i, x, y;
    cin >> n >> m >> start;
    
    for(i = 1; i <= m; i++) {
        cin >> x >> y;
        graf[x].push_back(y);
        d[i] = INF;
    }
    
    d[start] = 0;
    bfs(start);
    
    for(i = 1 ; i <= n; i++) {
        if( d[i] == INF )
            cout<<"-1 ";
        else
            cout<<d[i]<<" ";
    }
    
    return 0;
}