Cod sursa(job #1576613)

Utilizator geo_furduifurdui geo geo_furdui Data 22 ianuarie 2016 17:27:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int coada[1000001],start[1000001],t[2][1000001],v[1000001];
void bf (int n,int s)
{
    int pi=1,ps=1,p;
    coada[1]=s;
    while(ps<=pi)
    {
        p=start[coada[ps]];
        while(p!=0)
        {
         if(v[t[0][p]]==0) pi++,coada[pi]=t[0][p],v[t[0][p]]=v[coada[ps]]+1;  p=t[1][p];
        } ps++;
    }
}
int main()
{
    int i,m,n,p,p1,k=0,s;
    f>>n>>m>>s;
    for(i=1;i<=m;i++)
    {
        f>>p>>p1;
        if(p!=p1)
        { k++;
            t[0][k]=p1;
            t[1][k]=start[p];
            start[p]=k;
        }
    }
    bf(n,s);
    for(i=1;i<=n;i++)
    {
        if(s==i) g<<0<<" ";
        else
        {
            if(v[i]==0) g<<-1<<" ";
            else g<<v[i]<<" ";
        }
    }
    f.close();
    g.close();
    return 0;
}