Cod sursa(job #1779900)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 15 octombrie 2016 18:00:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int NMAX = 100000;
queue<int>q;
vector<int>v[NMAX+5];
int d[NMAX+5];
void bfs () {
    int nod, i;
    while ( !q.empty() ) {
        nod = q.front();
        q.pop();
        for ( i = 0 ; i < v[nod].size() ; ++ i ) {
            if ( d[v[nod][i]] == -1 ) {
                d[v[nod][i]] = d[nod] + 1;
                q.push ( v[nod][i] );
            }
        }
    }
}
void init ( int n ) {
    int i;
    for ( i = 1 ; i <= n ; ++ i )
        d[i] = -1;
}
int main() {
    freopen ( "bfs.in", "r", stdin );
    freopen ( "bfs.out", "w", stdout );
    int n, m, s, x, y, i;
    scanf ( "%d%d%d", &n, &m, &s );
    for ( i = 1 ; i <= m ; ++ i ) {
        scanf ( "%d%d", &x, &y );
        v[x].push_back ( y );
    }
    q.push ( s );
    init ( n );
    d[s] = 0;
    bfs();
    for ( i = 1 ; i <= n ; ++ i )
        printf ( "%d ", d[i] );
    return 0;
}