Cod sursa(job #976445)

Utilizator manutrutaEmanuel Truta manutruta Data 23 iulie 2013 11:58:58
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

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

int n, m, s;
vector <int> G[100100];
queue <int> coada;
int dist[100100];

int main()
{
    f >> n >> m >> s;
    for (int i = 1; i <= m; i++) {
        int x, y;
        f >> x >> y;

        G[x].push_back(y);
        //G[y].push_back(x);
    }

    dist[s] = 1;
    coada.push(s);

    while (coada.size()) {
        for (int i = 0; i < G[coada.front()].size(); i++) {
            if (dist[G[coada.front()][i]] == 0) {
                dist[G[coada.front()][i]] = dist[coada.front()] + 1;
                coada.push(G[coada.front()][i]);
            }
        }
        coada.pop();
    }

    for (int i = 1; i <= n; i++)
        cout << dist[i] - 1 << ' ';


    return 0;
}