Cod sursa(job #2117292)

Utilizator lorena1999Marginean Lorena lorena1999 Data 28 ianuarie 2018 19:15:40
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <queue>
# define DIMM 100001
#include <vector>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n, m, start, dist[DIMM];

vector <int> v[DIMM];
queue < int > Q;

void init()
    {
        for(int i=1; i<=n; i++)
            dist[i]=-1;
    }

void citire()
    {
        f>>n>>m>>start;
        int x, y;
        for(int i=1; i<=m; i++)
        {
            f>>x>>y;
            v[x].push_back(y);
        }
    }

void bfs()
    {
        while(!Q.empty())
            {
                int nod = Q.front();
                for (size_t i = 0; i<v[nod].size(); i++)
                    {
                        int vecin = v[nod][i];
                        if(dist[vecin]==-1)
                            {
                                dist[vecin]=dist[nod]+1;
                                Q.push(vecin);
                            }
                    }
            Q.pop();
            }
        for(int i=1; i<=n; i++)
            g<<dist[i]<<" ";

    }

int main()
{
    citire();
    init();
    Q.push(start);
    dist[start]=0;
    bfs();

    return 0;
}