Cod sursa(job #874421)

Utilizator VladMSBonta vlad valentin VladMS Data 8 februarie 2013 13:34:54
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
    int info;
    nod *next;
};
nod *p,*l[100001];
int x,y,i,j,n,st,viz[100001],cs,cd,co[100001],m,nr,ok;
int main()
{
    fin>>n>>m>>st;
    for(i=1;i<=m;++i)
    {
        fin>>x>>y;
        p=new nod;
        p->next=l[x];
        p->info=y;
        l[x]=p;
    }
    cs=1;
    cd=1;
    nr=1;
    viz[st]=nr;
    nr++;
    while(cs<=cd)
    {ok=0;
        while(l[st])
        {
            ok=1;
            if(viz[l[st]->info]==0)
                {co[cd++]=l[st]->info;
                 viz[l[st]->info]=nr;
                }
            l[st]=l[st]->next;
        }
    if(ok==1)
        nr++;
    st=co[cs++];
    }
    for(i=1;i<=n;++i)
        fout<<viz[i]-1<<" ";
    return 0;
}