Cod sursa(job #2447082)

Utilizator gabbie02Thomits Gabriel gabbie02 Data 12 august 2019 00:02:33
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <queue>
#include <list>

using namespace std;

list<unsigned int> * adjlist;
int * dist;

void bfs(unsigned int src)
{
    queue<unsigned int> q;
    q.push(src);
    dist[src] = 0;
    while(!q.empty()){
        src = q.front();
        q.pop();
        for(list<unsigned int>::iterator it = adjlist[src].begin(); it != adjlist[src].end(); it++){
            if(dist[*it] == -1){
                q.push(*it);
                dist[*it] = dist[src] + 1;
            }
        }
    }
}

int main()
{
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    unsigned int n, i, j, src;
    fin >> n >> i >> src;
    adjlist = new list<unsigned int>[n + 1];
    dist = new int[n + 1];
    for(i = 0; i <= n; i++){
        dist[i] = -1;
    }
    while(fin >> i >> j){
        adjlist[i].push_back(j);
    }
    bfs(src);
    for(i = 1; i <= n; i++){
        fout << dist[i] << " ";
    }
    return 0;
}