Cod sursa(job #1830933)

Utilizator ioanalexandraIoan Alexandra ioanalexandra Data 17 decembrie 2016 11:40:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
int n,m,s,i,viz[100001],x,y;
struct nod
{
    int inf;
    nod*urm;
}*v[100001];
void adaugare(nod *&prim, int x)
{
    nod*nou;
    nou=new nod;
    nou->inf=x;
    nou->urm=prim;
    if(prim==NULL)
        prim=nou;
    else {
        nou->urm=prim;
        prim=nou;
    }
}
void bfs(int x)
{
    int p,u,c[100001];
    p=u=1;
    nod*j;
    c[u]=x;
    viz[x]=1;
    while(p<=u)
    {
        x=c[p];
        for(j=v[x]; j!=NULL; j=j->urm)
            if(viz[j->inf]==0)
            {
                c[++u]=j->inf;
                viz[j->inf]=viz[x]+1;
            }
        p++;
    }
}
int main()
{
    f>>n>>m>>s;
    for(i=1; i<=m; i++)
    {
        f>>x>>y;
        adaugare(v[x],y);
    }
    bfs(s);
    for(i=1; i<=n; i++)
        g<<viz[i]-1<<" ";

    return 0;
}