Cod sursa(job #1497289)

Utilizator Julian.FMI Caluian Iulian Julian. Data 6 octombrie 2015 17:00:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
#define nmax 200005

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

long  *g[nmax] , viz[nmax];

void bfs(long x)
{long i,y,in,sf=in=0,q[nmax];

q[in]=x;viz[x]=1;
while(in<=sf)
{y=q[in++];
for(i=1;i<=g[y][0];i++)
    if(!viz[g[y][i]])
    {viz[g[y][i]]=viz[y]+1;
    q[++sf]=g[y][i];
    }
}

}

int main()
{long n,m,s,i,x,y;
    fin>>n>>m>>s;

    for(i=1;i<=n;i++)
    {   g[i]=(long *)realloc(g[i],sizeof(long));
        g[i][0]=0;
    }

    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        g[x][0]++;
        g[x]=(long*)realloc(g[x],(g[x][0]+1)*sizeof(long));
        g[x][g[x][0]]=y;

    }

    bfs(s);

for(i=1;i<=n;i++)fout<<(viz[i]-1)<<' ';
}