Cod sursa(job #630416)

Utilizator mr.johnFMI - Laceanu Ionut-Adrian mr.john Data 5 noiembrie 2011 15:46:06
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdlib>
#include <iostream>
#define maxn 100001
using namespace std;
int n, m, s, cost[maxn], coada[maxn], vecini[maxn][100];

void citire()
{
  int a,b;
  scanf("%d %d %d ",&n,&m,&s);
  for (int i=1;i<=m;i++)
  {
    scanf("%d %d ", &a, &b);
    vecini[a][++vecini[a][0]]=b;
  }
}

void BFS(int node)
{
  for(int i=0;i<=maxn;i++)
    cost[i]=-1;
  coada[0]=1;
  cost[node]=0;
  coada[coada[0]]=node;
  
  for (int i=1;i<=n;i++)
    for(int j=1; j<=vecini[coada[i]][0];j++)
      if (cost[vecini[coada[i]][j]]<0)
      {
        coada[++coada[0]]=vecini[coada[i]][j];
        cost[coada[coada[0]]]=cost[coada[i]]+1;
      }
}

int main(int argc, char *argv[])
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    citire();
    BFS(s);
    for (int i=1;i<=n;i++)
      printf("%d ", cost[i]);
    return EXIT_SUCCESS;
}