Cod sursa(job #3124138)

Utilizator GeorgeAndreiGeorge Andrei Iarca GeorgeAndrei Data 27 aprilie 2023 00:35:31
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>

using namespace std;

int N, M, S;

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

    f >> N >> M >> S;

    vector<vector<int>> adj(N+1);

    int u, v;
    for (int i = 0; i < M; i++) {
        f >> u >> v;
        adj[u].push_back(v);
    }

    vector<int> dist(N+1, -1);
    vector<bool> vis(N+1, false);
    queue<int> q;
    q.push(S);
    dist[S] = 0;

    while (!q.empty()) {
        u = q.front();
        q.pop();
        for (int nod: adj[u]) {
            if (!vis[nod]) {
                vis[nod] = true;
                if (nod != u)
                    dist[nod] = dist[u]+1;
                q.push(nod); 
            }
        }
    }

    for (int u = 1; u <= N; u++) {
        g << dist[u] << " ";
    }

    f.close();
    g.close();
    return 0;
}