Cod sursa(job #2417563)

Utilizator WoodsOfYpresAdora Vivos WoodsOfYpres Data 30 aprilie 2019 13:55:17
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>

using namespace std;

int dist[100005];
vector <int> graf[100005];
int vizitat[100005];
queue <int> coada;
void BFS(int x)
{
    vizitat[x]=1;
    int i,lim,y;
    coada.push(x);
    while(coada.empty()==0)
    {
        y=coada.front();
        coada.pop();
        lim=graf[y].size();
        for(i=0;i<lim;i++)
        {
            if(vizitat[graf[y][i]]==0)
            {
                vizitat[graf[y][i]]=1;
                dist[graf[y][i]]=dist[y]+1;
                coada.push(graf[y][i]);
            }
        }
    }
}
int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    int N,M,i,x,y,S;
    f>>N>>M>>S;
    for(i=1;i<=M;i++)
    {
        f>>x>>y;
        graf[x].push_back(y);
    }
    for(i=1;i<=N;i++)
        dist[i]=-1;
    dist[S]=0;
    BFS(S);
    for(i=1;i<=N;i++)
        g<<dist[i]<<" ";
    return 0;
}