Cod sursa(job #1235599)

Utilizator LycrsTrifan Tamara Lycrs Data 30 septembrie 2014 01:18:14
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream cin("bfs.in");
ofstream cout("bfs.out");

typedef struct lista
{
    int info;
    lista *next;
}*nod;

void add( int x, nod &y)
{
 nod p=new  lista;
 p->info=x;
 p->next=y;
 y=p;
}

int bg, sf, n, m, s, x, y, i, viz[100005], rs[100005], q[1000005];
nod tab[100005], p;


int main()
{
    cin>>n>>m>>s;
    for (i=1; i<=m; ++i)
    {
        cin>>x>>y;
        add(y, tab[x]);
    }


    for (i=1; i<=n; ++i)
        rs[i]=-1;

    bg=1; sf=1; q[1]=s; rs[s]=0; viz[s]=1;

    while (bg<=sf)
    {
        for (p=tab[q[bg]]; p; p=p->next)
            if (viz[p->info]==0)
            {
                ++sf;
                q[sf]=p->info;
                rs[q[sf]]=rs[q[bg]]+1;
                viz[p->info]=1;
            }
       ++bg;
    }

    for(i=1;i<=n;i++) cout<<rs[i]<<' ';


    return 0;
}