Cod sursa(job #2797164)

Utilizator iulia.chereji21Chereji Iulia iulia.chereji21 Data 9 noiembrie 2021 14:00:36
Problema BFS - Parcurgere in latime Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

FILE *fin, *fout;
int N, M, S, x, y;
const int NMAX=100001;
vector <int>graph[NMAX];
int nrArce[NMAX];

void bfs(){
    queue <int> q;
    q.push(S);
    nrArce[S]=0;
    int actual;

    while(!q.empty()){
        actual=q.front();
        q.pop();
        for(auto itr: graph[actual]){
            if(nrArce[itr]==-1){
                //nu am mai ajuns aici
                nrArce[itr]=nrArce[actual]+1;
                q.push(itr);
            }
        }
    }

}

int main()
{
    fin=fopen("bfs.in","r");
    fout=fopen("bfs.out","w");

    fscanf(fin,"%d %d %d",&N, &M, &S);
    for(int i=0;i<M;i++){
        fscanf(fin,"%d %d", &x, &y);
        graph[x].push_back(y);
    }

    for(int i=1;i<=N;i++){
        nrArce[i]=-1;
    }

    bfs();
    for(int i=1;i<=N;i++){
        fprintf(fout, "%d ",nrArce[i]);
    }


    return 0;
}