Cod sursa(job #2524235)

Utilizator RedPipperNastasa Stefan-Alexandru RedPipper Data 15 ianuarie 2020 11:34:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

const int lmt = 1e5+1;

vector<int> alist[lmt];
int n,m, s, prez[lmt], coada[lmt], st,fn;

int main()
{
    fin>>n>>m>>s;
    for(int i=1;i<=m;++i)
    {
        int x,y;
        fin>>x>>y;
        alist[x].push_back(y);
    }

    ++fn;
    coada[fn]=s;
    prez[s]=1;
    while(st<fn)
    {
        ++st;
        int nod = coada[st];
        vector<int>::iterator i;
        for(i = alist[nod].begin();i!=alist[nod].end();++i)
        {
            if(prez[*i]==0 && *i!=s)
            {
                ++fn;
                prez[*i]=prez[nod]+1;
                coada[fn]=*i;
            }
        }
    }
    for(int i=1;i<=n;++i)
    {
        
        fout<<(prez[i] ? prez[i]-1 : -1 )<<' ';

    }

    return 0;
}