Cod sursa(job #918076)

Utilizator monica11Szekely Monica monica11 Data 18 martie 2013 16:46:38
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
#define N 100001
struct nod
{

    int info;
    nod *urm;
};
nod *lista[N],*p;
int sol[N],coada[N],vf;
int n,m,x,y;
void bfs(int vf)
{
    int prim,ultim,nc;
    for(int i=1;i<=N;i++)
    sol[i]=-1,coada[i]=0;
    prim=ultim=1;
    coada[prim]=vf;
    sol[vf]=0;
    while(prim<=ultim)
    {
        nc=coada[prim];
        for(p=lista[nc];p;p=p->urm)
        if(sol[p->info]==-1)
        {
            coada[++ultim]=p->info;
            sol[p->info]=sol[nc]+1;
        }
        prim++;
    }
}
int main()
{
    int i;
    f>>n>>m>>vf;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        p=new nod;
        p->info=y;
        p->urm=lista[x];
        lista[x]=p;
    }
    bfs(vf);
    for(i=1;i<=n;i++)
    g<<sol[i]<<" ";
    return 0;
}