Cod sursa(job #2087211)

Utilizator stefii_predaStefania Preda stefii_preda Data 13 decembrie 2017 09:50:48
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");

const int N = 100005;
vector <int> g[N];
int d[N], c[N], n, m, s;
bool viz[N];

void bfs(int sursa)
{
    int p = 1, u = 1, x, i;
    viz[sursa] = true;
    d[sursa] = 0;
    c[1] = sursa;
    while(p <= u)
    {
        x = c[p];
        p++;
        for(i = 0; i < g[x].size(); i++)
        {
            if(viz[g[x][i]] == false)
            {
                u++;
                c[u] = g[x][i];
                viz[g[x][i]] = true;
                d[g[x][i]] = d[x] + 1;
            }
        }
    }

}



int main()
{
    in >> n >> m >> s;
    int i, a, b;
    for(i = 1; i <= m; i++)
    {
        in >> a >> b;
        g[a].push_back(b);
    }
    for(i = 1; i <= n; i++)
        d[i] = -1;
    bfs(s);
    for(i = 1; i <= n; i++)
        out << d[i] <<" ";
    return 0;
}