Cod sursa(job #2370124)

Utilizator tiberiu392Tiberiu Ungurianu tiberiu392 Data 6 martie 2019 10:48:22
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define INF 1<<30
#define dim  100005

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n, m, i, j, s, d[dim], st=1;
vector <int > v[dim];
deque < int > Q;
void bfs(  int n, int d[] , int start)
{
    Q.push_back(start);
    d[start] = 0;

    while ( !Q.empty())
    {
        int nod = Q.front();
        Q.pop_front();
        int l = v[nod].size();
        for (  i = 0 ; i < l ; i++)
        if( d[v[nod][i]] == INF )
        {
             d[v[nod][i]] = d[nod]+1;
             Q.push_back( v[nod][i] );
        }
    }
}

int main()
{
    f >> n >> m >> s;
    for ( i = 1; i <= n ; i++ )
        d[i] = INF;

   while (m--)
    {
        int x, y;
        f >> x >> y ;
        v[x].push_back(y);
    }
    bfs( n, d, st);

    for( i = 1 ; i <= n ; i++)
    if ( d[i] == INF )
    g << -1 << " " ;
    else
    g << d[i] << " ";
    return 0;
}