Cod sursa(job #2195427)

Utilizator lucaperjuLuca Perju Verzotti lucaperju Data 16 aprilie 2018 13:26:11
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
int coada[100005],start[100005],t[2][1000005],r[100005],n,m,poz;
void citire ()
{
    in>>n>>m>>poz;
    int i,k=0,a,b;
    for(i=1;i<=m;i++)
    {
        in>>a>>b;
        k++;
        t[0][k]=b;
        t[1][k]=start[a];
        start[a]=k;
    }
}
void bfs ()
{
    int i,st=1,dr=1,x,y;
    coada[1]=poz;
    r[poz]=0;
    while(st<=dr)
    {
        x=coada[st];
        for(i=start[x];i!=0;i=t[1][i])
        {
            y=t[0][i];
            if(r[y]==-1)
            {
                r[y]=1+r[x];
                dr++;
                coada[dr]=y;
            }
        }
        st++;
    }
}
int main()
{
    int i;
    citire();
    for(i=1;i<=n;i++)
        r[i]=-1;
    bfs();
    for(i=1;i<=n;i++)
        out<<r[i]<<' ';
    return 0;
}