Cod sursa(job #890216)

Utilizator alexteStefanescu Alexandru Catalin alexte Data 24 februarie 2013 22:10:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;
int n,m,s,start[100001],t[2][1000002];
void citire()
{
    int i,k=0,a,b;
    ifstream fin("bfs.in");
    fin>>n>>m>>s;
    for(i=1;i<=m;++i)
    {
        fin>>a>>b;
        k++;
        t[0][k]=b;
        t[1][k]=start[a];
        start[a]=k;
    }
}
void bf()
{
    ofstream fout("bfs.out");
    int pr,ul,coada[100001],viz[100001],i;
    pr=1;ul=1;
    coada[1]=s;
    viz[s]=0;
    while(pr<=ul)
    {
        for(i=start[coada[pr]];i!=0;i=t[1][i])
        {
            if(viz[t[0][i]]==0&&t[0][i]!=s)
            {
                ul++;
                coada[ul]=t[0][i];
                viz[t[0][i]]=viz[coada[pr]]+1;
            }
        }
        pr++;
    }
    for(i=1;i<=n;i++)
    if(viz[i]!=0||i==s)
        fout<<viz[i]<<' ';
    else
        fout<<"-1"<<' ';
    fout.close();
}
int main()
{
    citire();
    bf();
    return 0;
}