Cod sursa(job #1855373)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 23 ianuarie 2017 16:50:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
    int vecin;
    nod *adr;
};
nod *p,*L[100002];
int n,m,s,x,y,i,viz[100002];
void BFS(int vfstart, int viz[], nod *L[])
{
    int coada[100002],ul,pr;
    viz[vfstart]=1;
    coada[1]=vfstart;
    ul=1;
    pr=1;
    while(pr<=ul)
    {
        for(p=L[coada[pr]];p!=0;p=p->adr)
        {
            if(viz[p->vecin]==0)
            {
                viz[p->vecin]=1+viz[coada[pr]];
                ul++;
                coada[ul]=p->vecin;
            }
        }
        pr++;
    }
}
int main()
{
    fin>>n>>m>>s;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        p=new nod;
        p->vecin=y;
        p->adr=L[x];
        L[x]=p;
    }
    BFS(s,viz,L);
    for(i=1;i<=n;i++)
    {
        fout<<viz[i]-1<<" ";
    }
    fin.close();
    fout.close();
    return 0;
}