Cod sursa(job #884976)

Utilizator flslatina95Marin Florin flslatina95 Data 21 februarie 2013 15:34:08
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
long n,r;
long long m;
long long c[100000];
long long viz[100000];
struct nod {
    long long j;
    nod *urm;

};
nod *g[100000];
void cit()
{
    int i,j;
    nod *p;
    fin>>n>>m>>r;
    while(fin>>i>>j)
    {
        p=new nod;
        p->j=j;
        p->urm=g[i];
        g[i]=p;
    }
fin.close();
}

void  tipar ()
{int i;
    nod *p;
   for(i=1;i<=n;i++)
    {
    fout<<i<<" ";
    p=g[i];
        while(p)
        {
            fout<<p->j<<" ";
            p=p->urm;
        }
    fout<<'\n';
    }
}
inline void bf(int r)
{
    int p,u,vf;
    c[1]=r;
    p=u=1;
    nod *d;
    viz[r]=1;
    while(p<=u)
    {
        vf=c[p];
        d=new nod;
        d=g[vf];
        while(d)
        {
        if(viz[d->j]==0)
            {
            u++;
            c[u]=d->j;
            viz[d->j]=viz[vf]+1;
            }
        d=d->urm;
        }
    p++;
    }
}
int main()
{
    cit();
    bf(2);
    int i;
 //   viz[1]--;
    for(i=1;i<=n;i++)
    {
    if(i==r) fout<<0<<" ";
        else
            if(viz[i]==0)
                fout<<-1<<" ";
            else
                fout<<viz[i]-1<<" ";

    }
    return 0;
}