Cod sursa(job #1387153)

Utilizator mist.moonDenisa Gherghel mist.moon Data 13 martie 2015 19:24:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <deque>
using namespace std;

const int MAXN=100010;

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

void bfs(int s)
{
    fill(cost+1,cost+n+1,-1);
    cost[s]=0;
    bf.push_back(s);
    while(!bf.empty())
    {
        for(int i=0; i<a[bf[0]].size();i++)
        {
            if(cost[a[bf[0]][i]]==-1)
            {
                bf.push_back(a[bf[0]][i]); cost[a[bf[0]][i]]=cost[bf[0]]+1;
            }
        }
        bf.pop_front();
    }

}

void afis ()
{
    for(int i=1;i<=n;i++) printf("%d ", 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++) {
        scanf("%d %d ", &x, &y);
        a[x].push_back(y);
    }

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

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