Cod sursa(job #2149234)

Utilizator GeorgeCalinPetruta George-Calin GeorgeCalin Data 2 martie 2018 13:44:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <vector>
#include <queue>
#define nmax 100002
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

queue <int> coada;
vector <int> graf[nmax];
int dist[nmax];

void bfs(int start)
{
    dist[start]=1;
    coada.push(start);
    while(!coada.empty())
    {
        int nod=coada.front();
        int lg=graf[nod].size();
        coada.pop();
        for(int i=0;i<lg;i++)
            if(!dist[graf[nod][i]]){
                dist[graf[nod][i]]=dist[nod]+1;
                coada.push(graf[nod][i]);
            }
    }
}

int main()
{
    int n,m,start,x,y;
    fin>>n>>m>>start;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y;
        graf[x].push_back(y);
    }
    bfs(start);
    for(int i=1;i<=n;i++)
    {
        if(dist[i]==0)
        {
            fout<<-1<<" ";
            continue;
        }
        fout<<dist[i]-1<<" ";
    }
    return 0;
}