Cod sursa(job #829828)

Utilizator MonicaVizitiuMonica Vizitiu MonicaVizitiu Data 5 decembrie 2012 21:38:30
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

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

int m, n, x, y;
int a[100][100], lg[100];

void citire();
void bfs();

int viz[100];//viz[i]=1 daca vf i a fost vizitat
int x0;
int c[100];

int main()
{
    citire();
    bfs();
    return 0;
}

void citire()
{
    int i;
    fin>>n>>m>>x0;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        a[x][y]=1;
    }
}

void bfs()
{
    int y, i, inc, sf, x;
    inc=0; sf=-1;
    c[++sf]=x0; viz[x0]=1; //fout<<x<<' ';
    while(inc<=sf)
    {
        x=c[inc];
        for(y=1;y<=n;y++)
        {
            if(viz[y]==0&&a[x][y]==1)
            {
                c[++sf]=y; viz[y]=1; //fout<<y<<' ';
                lg[x]=lg[c[inc]]+1;
                //lg[x]++;
            }
        }
        inc++;
    }
    lg[x0]=0;
    for(i=1;i<=n;i++)
        if(viz[i]==0) fout<<-1<<' ';
    else
        fout<<lg[i]<<' ';
}