Cod sursa(job #2505269)

Utilizator DayanamdrMardari Dayana Raluca Dayanamdr Data 6 decembrie 2019 17:20:41
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct nod {
    int value;
    nod * next;
};
nod* v[100001];
void inserareInceput(nod* &cap, int val) {
    nod* el = new nod;
    el -> value = val;
    el -> next = cap;
    cap = el;
}

nod* nodes[100001];
void BFS(nod* &cap, int dist[100001],int visited[100001], int lg) {
    int nrNodes = 0;
    while (cap != NULL) {
        int nr = cap -> value;
        if(visited[nr] == 0) {
            visited[nr] = 1;
            dist[nr] = lg + 1;
            ++nrNodes;
            nodes[nrNodes] = cap;

        }
        cap = cap -> next;
    }
    for(int i = 1; i <= nrNodes; i++) {
            int nnr = nodes[i] -> value;
        BFS(v[nnr], dist, visited, lg + 1);

    }

}
int main()
{
    int n, dist[100001], visited[100001], S;
    f >> n;
    for(int i = 1; i <= n; i++) {
        v[i] = NULL;
        dist[i] = -1;
        visited[i] = 0;
    }
    int m;
    f >> m >> S;
    while(m--) {
        int x, y;
        f >> x >> y;
        inserareInceput(v[x], y);
    }
    dist[S] = 0; visited[S] = 1;
    BFS(v[S], dist, visited, 0);
    for(int i = 1; i <= n; i++)
        g << dist[i] << " ";
    return 0;
}