Cod sursa(job #3272030)

Utilizator pacelaaaCiurea Pavel pacelaaa Data 28 ianuarie 2025 10:23:46
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

#define Nmax 100000

vector<int> adj[Nmax];
queue<int> q;
bool used[Nmax];
int dist[Nmax];

int main()
{
    int n, m, s, i, u, v;
    ifstream fin ( "bfs.in" );
    ofstream fout ( "bfs.out" );

    fin >> n >> m >> s;
    q.push( s );
    dist[s] = 0;
    used[s] = true;
    for( i = 0; i < m; i ++ ) {
      fin >> u >> v;
      adj[u].push_back( v );
    }
    fin.close();

    while ( !q.empty() ) {
      u = q.top();
      for ( i = 0; i < adj[u].size(); i ++ )
        if ( !used[ adj[u][i] ] ) {
          dist[ adj[u][i] ] = dist[u] + 1;
          used[ adj[u][i] ] = true;
          q.push( adj[u][i] );
        }
      q.pop();
    }

    for ( i = 1; i <= n; i ++ ) {
      if ( i == s )
        fout << 0 << " "; else if ( dist[i] == 0 ) {
        fout << -1 << " ";
        } else {
        fout << dist[i] << " ";
        }
    }

    fout.close();

    return 0;
}