Cod sursa(job #971238)

Utilizator StBogdanStoicescu Bogdan StBogdan Data 8 iulie 2013 20:15:52
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
 int a[2500][25000];
int q[2500],l[2500],t[2500];
int p,ult,x,n;
bool sel[2500];
ifstream IN("bfs.in");
ofstream OUT("bfs.out");
void bf(int nod)
{
    memset(sel,false,sizeof(sel));
    memset(l,-1,sizeof(l));
    int i;
    p=ult=1;
    t[nod]=l[nod]=0;
    sel[nod]=true;
    q[ult]=nod;
    while(p<=ult)
    {x=q[p];
        for(i=1;i<=n;i++)
        {

            if(!sel[i] && a[x][i]==1)
            {
                q[++ult]=i;
                sel[i]=true;
                l[i]=l[x]+1;
                t[i]=x;
            }
        }
     p++;
    }
}
int main()
{
    int i,x1,x2,y,m;

    IN>>n>>m>>x2;
    memset(a,0,sizeof(a));
    for(i=1;i<=m;i++) {IN>>x1>>y; a[x1][y]=1;}
    bf(x2);
    for(i=1;i<=n;i++) OUT<<l[i]<<" ";
    return 0;
}