Cod sursa(job #2649859)

Utilizator Iulia25Hosu Iulia Iulia25 Data 16 septembrie 2020 17:37:02
Problema BFS - Parcurgere in latime Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>

using namespace std;

ifstream cin ("bfs.in");
ofstream cout ("bfs.out");

int n, m, r, s, d, x, y;
int viz[100005], coada[100005];

struct nod {
int et;
nod* adr;
} *L[100005];
void bfs(int a)
{
coada[1]=a;
s=d=1;
while(s<=d)
{
for(nod* nd=L[coada[s]]; nd !=NULL; nd=nd ->adr)
 if(viz[nd->et]==-1)
  {
  coada[++d]=nd->et;
  viz[coada[d]]=viz[coada[s]]+1;
  }
  s++;
}
}
int main()  {
  cin>>n>>m>>r;
  for (int i = 1; i <= n; ++i)
    viz[i] = -1;
  viz[r] = 0;
  while(cin>>x>>y)
  {
  nod* p = new nod;
  p -> et = y;
  p -> adr = L[x];
  L[x] = p;
  }
  bfs(r);
  for (int i = 1; i <= n; ++i)
    cout << viz[i] << ' ';
	return 0;
}