Cod sursa(job #3229337)

Utilizator cret007Andrei Cret cret007 Data 15 mai 2024 11:39:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define MAX_NODES 100001

int nodes, edges, source;

queue <pair < int, int> > Queue;
vector <vector <int>> adj(MAX_NODES);
vector <int> visited (MAX_NODES, false);
vector <int> dist (MAX_NODES);

void bfs(int source) {

    visited[source] = true;
   
    pair <int, int> p;

    p.first = source;
    p.second = 0;
    Queue.push(make_pair(source, 0));


    while (!Queue.empty()) {

        p = Queue.front();
        Queue.pop();
        int currentNode = p.first;
        int level = p.second;

        for (int neighbor : adj[currentNode]) {
            if (!visited[neighbor]) {
                visited[neighbor] = true;
                dist[neighbor] = level +1 ;
                Queue.push(make_pair(neighbor, level + 1));
            }
        }
        
    }
}


int main() {

    fin>>nodes>>edges>>source;
    int x, y;

    for (int i = 0; i < edges; i++) {
        fin>>x>>y;
        adj[x].push_back(y);
    }

    bfs(source);

    for (int i = 1; i <= nodes; i++) {
        if (!dist[i] && i != source)
            fout<<-1;
        else fout<<dist[i];
        fout<<' ';
    }

    return 0;
}