Cod sursa(job #2273201)

Utilizator Alex03Runcan Alexandru Alex03 Data 31 octombrie 2018 10:35:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in"); ofstream fout ("bfs.out");
#define maxn 100010
int n,m,l,Start;
vector <int> a[maxn];
int g[maxn], s[maxn], Cost[maxn];

void BFS(int nod)
{
    int i,j;
    memset(Cost, -1, sizeof(Cost));
    // am introdus nodul de start in coada
    l = 1;
    Cost[nod] = 0;
    s[l] = nod;
    for (i = 1; i <= l; i++)
        for (j = 0; j < g[s[i]]; j++)
        if (Cost[a[s[i]][j]] == -1)
        {
            s[++l] = a[s[i]][j];
            Cost[s[l]] = Cost[s[i]] + 1;
        }
}

int main()
{
    int i, x, y;
    fin >> n >> m >> Start;
    for (i = 1; i <= m; i++)
    {
        fin >> x >> y;
        a[x].push_back(y);
    }
    for (i = 1; i <= n; i++)
        g[i] = a[i].size();
    BFS(Start);
    for (i = 1; i <= n; i++)
        fout << Cost[i] << ' ';
    fout << '\n';
    return 0;
}