Cod sursa(job #1581932)

Utilizator Constantin1998Draghici Constantin Constantin1998 Data 27 ianuarie 2016 13:13:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
#include <vector>
#define Nmax 100005
#include <cstring>
using namespace std;

int n,m,start;
vector<int>G[Nmax];
int S[Nmax],cost[Nmax],A[Nmax];

void read()
{
    int x,y;
    scanf("%d%d%d",&n,&m,&start);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        G[x].push_back(y);
    }
    memset(cost,-1,sizeof(cost));
    for(int i=1;i<=n;i++)
        A[i]=G[i].size();

}
void BFS(int varf)
{
    int i,L,j;
    L=1;
    cost[varf]=0;
    S[L]=varf;
    for(i=1;i<=L;i++)
    {
        for(j=0;j<A[S[i]];j++)
            if(cost[G[S[i]][j]]==-1)
        {
            S[++L]=G[S[i]][j];
            cost[S[L]]=cost[S[i]]+1;
        }
    }
}
int main()
{
  freopen("bfs.in","r",stdin);
  freopen("bfs.out","w",stdout);
  read();
  BFS(start);
  for(int i=1;i<=n;i++)
    printf("%d ",cost[i]);
}