Cod sursa(job #829512)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 5 decembrie 2012 16:05:20
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream fin("nr.in");
ofstream fout("nr.out");
int n,m,v[100001],x[100001],k,d[100001];
struct nod
{
    int inf;
    nod *adr;
}*l[101];
void creare (int i, int j)
{

    nod *c=new nod;
    c->inf=j;
    c->adr=l[i];
    l[i]=c;
}
void parcurgere ()
{
    int i;
    nod *c;
    int j=1;
    int p,u; p=u=1;
    v[k]=1;x[1]=k;
    while(p<=u)
     {
        c=l[x[p]];
        while (c)
        {
            if (v[c->inf]==0)
            {
                x[++u]=c->inf;
                v[c->inf]=1;
                d[c->inf]=d[x[p]]+1;
            }
                c=c->adr;
        }
        p++;
     }
    for (i=1;i<=n;i++) if (v[i]==0) d[i]=-1;
    for (i=1;i<=n;i++) fout<<d[i]<<" ";
}
int main()
{
    int x,y;
    fin>>n>>m>>k;
    for (int i=1;i<=m;i++)
    {
        fin>>x>>y;
        creare(x,y);
    }
    parcurgere();
    return 0;
}