Cod sursa(job #798370)

Utilizator bulbulicaAlexandrescu Cristian bulbulica Data 16 octombrie 2012 15:26:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;

#define Nmax 100005
ifstream f("bfs.in");
ofstream g("bfs.out");

struct nod
{
    int inf;
    nod *adr;
}*v[Nmax];

int viz[Nmax],n,s,m;

void creare()
{
    f>>n>>m>>s;
    int i;
    for (i=1;i<=m;++i)
    {
        int x,y;
        f>>x>>y;
        nod *p=new nod;
        p->inf=y;
        p->adr=v[x];
        v[x]=p;
    }
}
void bfs(int x)
{
    int c[Nmax];
    int p=1,u=1,d[Nmax];
    c[p]=x;
    viz[x]=1;
    while (p<=u)
    {
        x=c[p];
        p++;
        for (nod *q=v[x];q!=NULL;q=q->adr)
        {
            if (viz[q->inf]==0)
            {
                d[q->inf]=d[x]+1;
                c[++u]=q->inf;
                viz[q->inf]=1;
            }
        }
    }

    for (int i=1;i<=n;++i)
        if (viz[i]==0)
            g<<"-1"<<" ";
        else
            g<<d[i]<<" ";

}
int main()
{
    creare();
    bfs(s);
    return 0;
}