Cod sursa(job #1830897)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 17 decembrie 2016 11:20:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");

struct nod
{
    int inf;
    nod *urm;
}*v[100001];

void adaug (nod *&prim, int x)
{
    nod *nou;
    nou=new nod;
    nou->inf=x;
    nou->urm=NULL;
    if(prim==NULL)
        prim=nou;
    else
        {
         nou->urm=prim;
         prim=nou;
        }
}

void afisare (nod *prim)
{
    nod *p;
    p=prim;
    while(p!=NULL)
    {
        g<<p->inf<<" ";
        p=p->urm;
    }
}

int viz[100001];
void BF (int x)
{
    viz[x]=1;
    nod *t;
    int c[100001];
    int p,u;
    p=u=1;
    c[u]=x;
    while(p<=u)
    {
        x=c[p];
        for(t=v[x];t;t=t->urm)
        {
            if(viz[t->inf]==0){viz[t->inf]=viz[x]+1;u++;c[u]=t->inf;}
        }
        p++;
    }
}


int n,m,S,i,x,y;
int main()
{
    f>>n>>m>>S;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        adaug(v[x],y);
    }

    BF(S);
    for(i=1;i<=n;i++)
        g<<viz[i]-1<<" ";
    return 0;
}