Cod sursa(job #639845)

Utilizator blk.irineluIrina Ursateanu blk.irinelu Data 24 noiembrie 2011 00:37:46
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <vector>
//#define max 100000

using namespace std;
const int maxn=100000;
vector <int> muchii[maxn];
int viz[maxn];
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;
}