Cod sursa(job #2197741)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 22 aprilie 2018 20:17:23
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, sol[100003];
vector<int> a[100003];
queue<pair<int, int>> q;
bool visit[100003];
int main()
{
    f >> N >> M >> S;
    for(int i = 0; i < M; i++)
        f >> x >> y, a[x].push_back(y);

    q.push({S, 0});
    visit[S] = true;
    while(!q.empty()) {
        for(auto i = a[q.front().first].begin(); i != a[q.front().first].end(); i++) {
            if(!visit[*i]) {
                q.push({*i, q.front().second + 1});
                sol[*i] = q.front().second + 1;
                visit[*i] = true;
            }
        }
        q.pop();
    }

    for(int i = 1; i <= N; i++)
        if(S == i || sol[i] > 0) g << sol[i] << " ";
        else g << "-1 ";
    g << "\n";
    return 0;
}