Cod sursa(job #2425722)

Utilizator ZamfiAndreiZamfira Andrei ZamfiAndrei Data 25 mai 2019 00:04:59
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.37 kb
#include <iostream>
#include <list>
#include <vector>
#include <fstream>

using namespace std;


void BFS(int vertice, bool visited[], vector<vector<int>> adj, int size) {
    ofstream g("bfs.out");
    int contor = 0;
    vector<int> distanta(size);
    visited[vertice] = true;
    distanta[vertice] = 0;

    list<int> queue;
    queue.push_back(vertice);

    while (!queue.empty()) {
        vertice = queue.front();
        queue.pop_front();

        for (int i = 0; i < adj[vertice].size(); i++) {
            if (!visited[adj[vertice][i]]) {
                visited[adj[vertice][i]] = true;
                queue.push_back(adj[vertice][i]);
                distanta[adj[vertice][i]] = contor;
            }
        }

        contor++;
    }

    for (int i = 0; i < size; i++) {
        if (visited[i]) {
            g << distanta[i] << " ";
        } else {
            g << -1 << " ";
        }
    }
}

int main() {
    ifstream f("bfs.in");
    int vertices, i, from, to, conexe = 0, j, edges, nod;
    f>>vertices;
    f>>edges;
    f>>nod;

    bool *visited = new bool[vertices];
    vector<vector<int>> adj((unsigned long) vertices, vector<int> ((unsigned long) vertices));

    for (i = 0; i < vertices; i++) {
        visited[i] = false;
    }

    for (i = 0; i < edges; i++) {
        f >> from; f >> to;
        adj[from].push_back(to);
    }

    BFS(nod, visited, adj, vertices);
}