Cod sursa(job #1867130)

Utilizator ancabdBadiu Anca ancabd Data 3 februarie 2017 19:25:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>
#include <cstring>

using namespace std;

ifstream fin ("bfs.in");
ofstream fout ("bfs.out");

#define NMAX 100001

int n, m, ind, s, x, y;
vector <int> a[NMAX];
int l[NMAX], S[NMAX], cost[NMAX];

void rez(int nod)
{
    memset(cost, -1, sizeof(cost));

    ind = 1;
    cost[nod] = 0;
    S[ind] = nod;

    for (int i = 1; i <= ind; i++)
        for (int j = 0; j < l[S[i]]; j++)
            if (cost[a[S[i]][j]] == -1)
            {
                S[++ind] = a[S[i]][j];
                cost[S[ind]] = cost[S[i]] + 1;
            }
}

int main()
{
    fin >> n >> m >> s;

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

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

    rez(s);

    for (int i = 1; i <= n; i++)
        fout << cost[i] << ' ';

    return 0;
}