Cod sursa(job #2418689)

Utilizator MortemPlaiasu Iulia-Silvia Mortem Data 5 mai 2019 19:56:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <queue>
#include <climits>
FILE * fin= fopen("bfs.in","r");
FILE * fout= fopen("bfs.out","w");

std::vector<int> v[100050];
int n, m,S;
long long minn[100050];
std::queue<int> q;


int main()
{
  fscanf(fin,"%d %d %d",&n,&m,&S);
  for(int i=0;i<m;i++)
  {
    int j,k;
    fscanf(fin,"%d %d",&j,&k);
    v[j].push_back(k);
  }
  for(int i=1;i<=n;i++)
    minn[i]=LONG_LONG_MAX;
  q.push(S);
  minn[S]=0;
  while(!q.empty())
  {
    int tp = q.front();
    q.pop();
    for(int i=0;i<v[tp].size();i++)
    {
      int elem = v[tp][i];
      if(minn[elem]> minn[tp]+1)
      {
        minn[elem]=minn[tp]+1;
        q.push(elem);
      }
    }
  }
  for(int i=1;i<=n;i++)
  {
    if(i==S)
      fprintf(fout,"0 ");
    else if(minn[i]!= LONG_LONG_MAX)
      fprintf(fout,"%lld ",minn[i]);
    else
      fprintf(fout,"-1 ");
  }
}