Cod sursa(job #2595109)

Utilizator ioanaisarioana teodora isar ioanaisar Data 7 aprilie 2020 02:22:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <fstream>	
#include <stdlib.h>
#include <queue>
#include <list>

#include <vector>
#define MAX_NODES 100010
using namespace std;
	
 
void add_edge(vector<int> lg[], int nod1, int nod2) { 
    lg[nod1].push_back(nod2);  	
} 

void bfs_graph(vector<int> lg[], int nodes, int node, int *visited, int *dist) {
    queue <int> q;
    int i, value;

    visited[node] = 1;
    dist[node] = 0;
    q.push(node);

    while(!q.empty()) {
        value = q.front();
        q.pop();

        for(auto i : lg[value]) {
            if (visited[i] == 0) {
               visited[i] = 1;
               dist[i] = dist[value] + 1;
               q.push(i);
            }
        }
    }
}

int main() { 
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");

    int i, nodes, x, y, edges, node, visited[MAX_NODES], dist[MAX_NODES];

    fin >> nodes >> edges >> node;
 	vector<int> lg[nodes+1];
	
    for(i = 1; i <= edges; i++) {
        fin >> x >> y;
        add_edge(lg, x, y);
    }
	
    for (i = 1; i <= nodes; i++) {
	    visited[i] = 0;
        dist[i] = -1;
	
    }

    bfs_graph(lg, nodes, node, visited, dist);
	
    for (i = 1; i <= nodes; ++i) {
        fout << dist[i] << ' ';
    }
	
    fin.close();
    fout.close();

    return 0; 
	
}