Cod sursa(job #1113442)

Utilizator mihaivasilacheMIhai Vasilache mihaivasilache Data 20 februarie 2014 16:44:13
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace std;
FILE*fin;
ofstream fout("bfs.out");
int i,m,n,s,viz[1001],x,y,c[1001];
struct element
{
    int v;
    element *adr;
}*l[1001],*q;
void bfs(int k)
{
    int p,u,w;
    element *i;
    p=u=1;
    c[p]=k;
    viz[k]=1;
    while(p<=u)
    {
        w=c[p];
        p++;
        for(i=l[w];i;i=i->adr)
            if(viz[i->v]!=1)
            {
                u++;
                c[u]=i->v;
                viz[i->v]=viz[w]+1;
            }
    }
}
int main()
{
    fin=fopen("bfs.in","r");
    fscanf(fin,"%d%d%d",&n,&m,&s);
    for(i=1;i<=m;i++)
    {
        fscanf(fin,"%d%d",&x,&y);
        q=new element;
        q->v=y;
        q->adr=l[x];
        l[x]=q;
    }
    bfs(s);
    for(i=1;i<=n;i++)
        fout<<viz[i]-1<<" ";
    fout.close();
    return 0;
}