Cod sursa(job #3198126)

Utilizator aeandreescuAndreescu Ana-Eliza aeandreescu Data 28 ianuarie 2024 13:26:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

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

const int nmax= 100000;
const int inf= 1<<30;

int d[nmax+1];
vector <int> v[nmax+1];

void bfs( int x ) {
    d[x]= 0;
    queue <int> q;
    for ( q.push(x); !q.empty(); q.pop() ) {
        for ( auto it: v[q.front()] ) {
            if ( d[it]==inf ) {
                d[it]= d[q.front()]+1;
                q.push(it);
            }
        }
    }
}

int main() {
    int n, m, s;
    fin>>n>>m>>s;
    for ( int i= 0, x, y; i<m; ++i ) {
        fin>>x>>y;
        v[x].push_back(y);
    }

    for ( int i= 1; i<=n; ++i ) {
        d[i]= inf;
    }
    bfs(s);

    for ( int i= 1; i<=n; ++i ) {
        if ( d[i]==inf ) {
            d[i]= -1;
        }
        fout<<d[i]<<" ";
    }
    fout<<"\n";

    return 0;
}