Cod sursa(job #2559581)

Utilizator driver71528@gmail.comTerec Andrei-Sorin [email protected] Data 27 februarie 2020 13:43:48
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int coada[100001];
int start=0,End=-1;

int n,m,s;

inline int pop()
{
    return coada[start++];
}
inline bool empty()
{
    return End<start;
}
inline int front()
{
    return coada[start];
}
inline void push(int x)
{
    coada[++End]=x;
}
vector<int> v[100001];
int cost[100001];

void bfs(int s)
{
    push(s);
    cost[s]=0;
    while(!empty())
    {
        int nod = pop();
        for(int x : v[nod])
            if(cost[x]==-1)
            {
                cost[x]=cost[nod]+1;
                push(x);
            }
    }
}

int main()
{
    f>>n>>m>>s;
    for(int i=1;i<=m;i++)
    {
        int a,b;
        f>>a>>b;
        v[a].push_back(b);
    }
    for(int i=1;i<=n;i++)
        cost[i]=-1;
    bfs(s);
    for(int i=1;i<=n;i++)
        g<<cost[i]<<' ';
    f.close();
    g.close();
}