Cod sursa(job #1807455)

Utilizator serbanSlincu Serban serban Data 16 noiembrie 2016 16:58:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <vector>
#include <fstream>

using namespace std;

vector<int> L[100005];
int d[100005];
bool viz[100005];

int n;

vector<int> b;

void bf(int x) {
    b.push_back(x);
    viz[x] = true;

    for(int i = 0; i < b.size(); i ++) {
        for(int j = 0; j < L[b[i]].size(); j ++) {
            if(!viz[ L[b[i]][j] ]) {
                d[ L[b[i]][j] ] = d[b[i]] + 1;
                b.push_back(L[b[i]][j]);
                viz[L[b[i]][j]] = true;
            }
        }
    }
}

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

    int m, s, x, y;
    f >> n >> m >> s;
    for(int i = 1; i <= m; i ++) {
        f >> x >> y;
        L[x].push_back(y);
    }

    bf(s);

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