Cod sursa(job #961718)

Utilizator pvsc.raduRadu Parvulescu pvsc.radu Data 12 iunie 2013 19:18:02
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int t[100000], lg[100000], n, m, x, y, a[10000][10000], S;
bool sel[100000];

ifstream f("bfs.in");
ofstream g("bfs.out");

void citire()
{
    int i;
    f>>n>>m>>S;
    memset(a,0,sizeof(a));
    for(i=1; i<=m; i++)
    {
        f>>x>>y;
        a[x][y]=1;
    }
}

void bf(int nod)
{
    int q[100],p,u,x;
    p=u=1;
    memset(q,0,sizeof(q));
    memset(lg,0,sizeof(lg));
    q[p]=nod;
    sel[nod]=true;
    t[nod]=lg[nod]=0;
    while(p<=u)
    {
        x=q[p];
        for(int i=1; i<=n; i++)
            if(a[x][i] && !sel[i])
            {
                q[++u]=i;
                sel[i]=true;
                lg[i]=lg[x]+1;
                t[i]=x;
            }
        p++;
    }
}

void afisare()
{
    for(int i=1; i<=n; i++)
    {
        if(sel[i]) g<<lg[i]<<" ";
        else g<<"-1"<<" ";
    }
}

int main()
{
    citire();
    memset(sel,false,sizeof(sel));
    bf(S);
    afisare();
    return 0;
}