Cod sursa(job #2315805)

Utilizator priboiraduPriboi Radu Bogdan priboiradu Data 10 ianuarie 2019 16:45:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

std::vector < int > g[100001];
std::queue < int > q;
int d[100001];

int main() {
    FILE *fin, *fout;
    int n, m, s, x, y, nd, i;
    fin = fopen( "bfs.in", "r" );
    fout = fopen( "bfs.out", "w" );
    fscanf( fin, "%d%d%d", &n, &m, &s );
    for ( i = 0; i < m; i++ ) {
        fscanf( fin, "%d%d", &x, &y );
        g[x].push_back( y );
    }
    for ( i = 1; i <= n; i++ )
        d[i] = -1;
    d[s] = 0;
    q.push( s );
    while ( !q.empty() ) {
        nd = q.front();
        q.pop();
        for ( i = 0; i < g[nd].size(); i++ ) {
            if ( d[g[nd][i]] == -1 ) {
                d[g[nd][i]] = d[nd] + 1;
                q.push( g[nd][i] );
            }
        }
    }
    for ( i = 1; i <= n; i++ )
        fprintf( fout, "%d ", d[i] );
    fclose( fin );
    fclose( fout );
    return 0;
}