Cod sursa(job #3219912)

Utilizator IoanMasterUngureanu Ioan IoanMaster Data 1 aprilie 2024 19:32:29
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <queue>

using namespace std;

int m[100001][100001], dist[100001], viz[100001];
int varf, muchii, start;

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

queue<int> Q;
void bfs(int st)
{
  int i;

  Q.push(st);

  while (!Q.empty())
  {
    int nod = Q.front();

    viz[nod] = 1;

    for (i = 1; i <= varf; i++)
      if (m[nod][i] && !viz[i])
      {
        dist[i] = dist[nod] + 1;
        Q.push(i);
      }

    Q.pop();
  }
}

int main()
{
  int i, a, b;
  fin >> varf >> muchii >> start;

  for (i = 1; i <= muchii; i++)
  {
    fin >> a >> b;
    m[a][b] = 1;
  }

  bfs(start);

  for (i = 1; i <= varf; i++)
    if (i != start && !dist[i])
      dist[i] = -1;

  for (i = 1; i <= varf; i++)
    fout << dist[i] << ' ';

  return 0;
}