Cod sursa(job #261649)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 18 februarie 2009 16:58:37
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<fstream>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

struct nod{
        int info;
        nod *urm;
        };
nod *prim[7501];

int i,n,m,x,y,s,cost[7501],c[7501];

void insert(int x, int y)
{       nod *p;
        p=new nod;
        p->info=y;
        p->urm=prim[x];
        prim[x]=p;
}

void bfs(int nd)
{       nod *q;
        int p=1,u=1,x;
        c[u]=nd;cost[c[u]]=0;
        
        while(p<=u)
        {       x=c[p];
                for(q=prim[x];q;q=q->urm)
                        if(cost[q->info]==-1)
                        {       cost[q->info]=cost[x]+1;
                                c[++u]=q->info;
                        }
                p++;
        }
}
int main()
{       fin>>n>>m>>s;
        for(i=1;i<=n;i++) cost[i]=-1;
        for(i=1;i<=m;i++)
        {       fin>>x>>y;
                insert(x,y);
        }
        bfs(s);
        for(i=1;i<=n;i++)
                fout<<cost[i]<<' ';
        return 0;
}