Cod sursa(job #1805074)

Utilizator LazarAndreiLazar Andrei Teodor LazarAndrei Data 13 noiembrie 2016 14:06:38
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

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

const int NMAX = 100003;

int cost [NMAX] , N , M , S , x ,y;
vector <int> L[NMAX] ;
vector <int> :: iterator i;
queue <int> Q;

void read_input ()
{
    in >> N >> M >> S;

    for(int i = 1 ; i <= M ; ++ i)
    {
        in >> x >> y;
        L[x].push_back(y);
    }
    memset(cost  , -1 , sizeof(cost));
}

void solve(int node)
{
    cost[node] = 0;
    Q.push(node);

    while(!Q.empty())
    {
        node = Q.front();
        Q.pop();

        for(i = L[node].begin() ; i != L[node].end()  ; ++ i)
        {
            if(cost[*i] == -1)
            {
                cost[*i] = cost[node] + 1;
                Q.push(*i);
            }
        }
    }
}

int main()
{
    read_input();
    solve (S);

    for(int i = 1 ; i <= N ; ++ i)
      out << cost[i] <<" ";

    return 0;
}