Cod sursa(job #1387126)

Utilizator mist.moonDenisa Gherghel mist.moon Data 13 martie 2015 18:39:57
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;

const int MAXN=100010;

vector <int> a[MAXN];
int n,m,s,x,y;
int cost[MAXN], bf[MAXN], sz[MAXN];

void bfs(int s)
{
    fill(cost+1,cost+n+1,-1);
    cost[s]=0;
    bf[1]=s;
    int l=1;
    for(int i=1;i<=l;i++)
    {
        for(int j=0;j<sz[bf[i]];j++)
            if(cost[a[bf[i]][j]]==-1)
            {
                l++; bf[l]=a[bf[i]][j];
                cost[a[bf[i]][j]]=cost[bf[i]]+1;
            }

    }
}

void afis ()
{
    for(int i=1;i<=n;i++) cout<<cost[i]<<" ";
}
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    cin>>n>>m>>s;

    for(int i=1;i<=m;i++) {
        cin>>x>>y;
        a[x].push_back(y);
    }

    for(int i=1;i<=n;i++)
        sz[i]=a[i].size();

    bfs(s); afis();
    return 0;
}