Cod sursa(job #2212537)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 14 iunie 2018 13:06:04
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

int N, M, S, x, y;
queue<int> Q;
vector<int> G[100003];
int sel[100003];
int lg[100003];
int main()
{
    f >> N >> M >> S;
    for(int i = 1; i <= M; i++) {
        f >> x >> y;
        G[x].push_back(y);
    }
    Q.push(S);
    sel[S] = true;
    while(!Q.empty()) {
        int nod = Q.front();
        for(auto it = G[nod].begin(); it != G[nod].end(); it++)
            if(!sel[*it]) {
                lg[*it] = lg[nod] + 1;
                sel[*it] = true;
                Q.push(*it);
            }
        Q.pop();
    }
    for(int i = 1; i <= N; i++)
        if(i == S) g << "0 ";
        else if(lg[i] == 0) g << "-1 ";
        else g << lg[i] << " ";
    return 0;
}