Cod sursa(job #330732)

Utilizator freak93Adrian Budau freak93 Data 11 iulie 2009 13:27:18
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<vector>
#define maxn 100005

using namespace std;

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

vector<int>a[maxn];

int i,j,n,m,grade[maxn],coada[maxn],passed[maxn],s,p,q,x,y;

int main()
{
    f>>n>>m>>s;
    for(i=1;i<=m;++i)
    {
        f>>x>>y;
        a[x].push_back(y);
        ++grade[x];
    }

    passed[s]=1;
    coada[++p]=s;
    q=p;
    while(p<=q)
    {
        x=coada[p++];
        for(i=0;i<grade[x];++i)
            if(passed[a[x][i]]==0)
                coada[++q]=a[x][i],passed[a[x][i]]=passed[x]+1;
    }

    for(i=1;i<=n;++i)
        g<<passed[i]-1<<" ";
    g<<"\n";

    f.close();
    g.close();
    return 0;
}