Cod sursa(job #2857702)

Utilizator albertaizicAizic Albert albertaizic Data 26 februarie 2022 10:06:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;

#define MAX_N 100001

vector<int> graph[MAX_N];

queue<int> bfs;
int d[MAX_N];

void bfss(int node){
  int qf;

  bfs.push(node);
  d[node]=1;

  while(!bfs.empty()){
    qf=bfs.front();

    for(int n : graph[qf]){
      if(d[n]==0) {
        bfs.push(n);
        d[n]=d[qf]+1;
      }
    }
    bfs.pop();
  }
}

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

  int n,m,i,a,b,s;
  fscanf(fin,"%d%d%d",&n,&m,&s);
  for(i=0;i<m;i++){
    fscanf(fin,"%d%d",&a,&b);
    graph[a].push_back(b);
  }

  bfss(s);

  for(i=1;i<=n;i++)
    fprintf(fout,"%d ",d[i]-1);

  fclose(fin);
  fclose(fout);
  return 0;
}