Cod sursa(job #1061749)

Utilizator RarRaresNedelcu Rares RarRares Data 20 decembrie 2013 11:16:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <vector>
#include <queue>
#include <cstdio>

#define nmax 100005


using namespace std;


int N, M, S;
vector<int> graf[nmax];
queue<int> coada;
int sol[nmax];


void citire()
{
//    cin >> N >> M >> S;

    scanf("%d %d %d\n", &N, &M, &S);
    for(int i = 1; i <= M; i++)
    {
        int x, y;
//        cin >> x >> y;
        scanf("%d %d\n", &x, &y);
        graf[x].push_back(y);
    }

}


void latime()
{
    coada.push(S);
    sol[S] = 1;
    while(!coada.empty())
    {
        int v = coada.front();
        coada.pop();
        vector<int>::iterator it;

        for(it = graf[v].begin(); it != graf[v].end(); ++it)
        {
            if(sol[*it] == 0)
            {
                sol[*it] = sol[v] + 1;
                coada.push(*it);
            }
        }
    }
}

void afisare()
{
    for(int i = 1; i <= N; i++)
        cout << sol[i]-1 << ' ';
}

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);

    citire();

    latime();

    afisare();
    return 0;
}