Cod sursa(job #2428577)

Utilizator Ioni2001Ion Patroescu Ioni2001 Data 5 iunie 2019 20:24:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

const int dim = 1e5 + 7;

queue <int> q;

bool viz[dim];

vector <int> a[dim];

int N, M, d[dim], S;

int main()
{
  fin >> N >> M >> S;

  while(M--)
  {
      int x, y;

      fin >> x >> y;
    a[x].push_back(y);
  }
  q.push(S);
  while(!q.empty())
  {
    int nodCurent = q.front();
    viz[nodCurent] = 1;
    q.pop();
    for(int i = 0; i < a[nodCurent].size(); i ++)
    {
        int vecin = a[nodCurent][i];
        if(viz[vecin] == 0)
        {
        d[vecin] = d[nodCurent] + 1;
        q.push(vecin);
        viz[vecin] = 1;
        }
    }
  }
  for(int i = 1; i <= N; i ++)
  {
      if(i == S)
        fout << '0' << " ";
      else
      {
          if(d[i] == 0)
            fout << "-1" << " ";
          else
            fout << d[i] << " ";
      }

  }
}