Cod sursa(job #639842)

Utilizator blk.irineluIrina Ursateanu blk.irinelu Data 24 noiembrie 2011 00:27:15
Problema BFS - Parcurgere in latime Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <vector>
#define max 100000

using namespace std;
vector <int> muchii[max];
int viz[max];
int m,n,s;

void bf(int s)
{
    vector <int> coada;
    coada.push_back(s);
    for(int i=1;i<=n;i++)
     viz[i]=-1;
    viz[s]=0;
    int p=0;
    while(p<coada.size())
    {
        int x=coada[p];
        int v=muchii[x].size();
        for(int j=0;j<v;j++)
        {
            if(viz[muchii[x][j]]==-1)
             {coada.push_back(muchii[x][j]);
            viz[muchii[x][j]]=viz[x]+1;}
        }
     p++;
    }
}

int main()
{
  freopen("bfs.in","r",stdin);
  freopen("bfs.out","w",stdout);
  scanf("%d%d%d",&n,&m,&s);
  for(int i=1;i<=m;i++)
  {
      int x,y;
      scanf("%d%d",&x,&y);
      muchii[x].push_back(y);
  }
  bf(s);
  for(int i=1;i<=n;i++)
   printf("%d ",viz[i]);

  return 0;
}