Cod sursa(job #2706878)

Utilizator marinaoprOprea Marina marinaopr Data 15 februarie 2021 22:26:11
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

int dist[100001];
int t[2][1000000],start[100001],n,m,k,nrc,i,x,y,c[100001],s;

void bf(int nstart)
{
    int p,u,poz,vecin,nod;
    c[1]=nstart;p=1;u=1;dist[nstart]=0;
    while(p<=u)
    {
         nod=c[p];
         poz=start[nod];
        while(poz)
        {
            int vecin=t[0][poz];
            if(dist[vecin]==-1)
            {
                u++;
                c[u]=vecin;
                dist[vecin]=dist[nod]+1;

            }
            poz=t[1][poz];
        }
        p++;
    }
}

int main()
{
    fin>>n>>m>>s;
    for(i=1;i<=n;i++) dist[i]=-1;
    for(i=1;i<=m;i++){
        fin>>x>>y;
        k++;
        t[0][k]=y;
        t[1][k]=start[x];
        start[x]=k;

    }
    bf(s);
    for(i=1;i<=n;i++) fout<<dist[i]<<' ';
    return 0;
}