Cod sursa(job #2258545)

Utilizator moltComan Calin molt Data 11 octombrie 2018 17:25:05
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

vector <int> v[1000005];

ifstream in("bfs.in");
ofstream out("bfs.out");
int n,m,ns,st,dr,q[100005],d[100005];
bool viz[100005];

void BFS(int ns)
{
    q[dr] = ns;
    d[ns] = 0;
    viz[ns] = true;
    while (st <= dr)
    {
        int x = q[st++];
        for (int i = 0; i < v[x].size(); ++i)
            if (viz[v[x][i]] == false)
            {
                d[v[x][i]] = d[x] + 1;
                q[++dr] = v[x][i];
                viz[v[x][i]] = true;
            }
    }
}

int main()
{
    in>>n>>m>>ns;
    for (int i = 1; i <= m; ++i)
    {
        int x,y;
        in>>x>>y;
        v[x].push_back(y);
    }
    for (int i = 0; i <= 100003; ++i)
        d[i] = -1;
    BFS(ns);
    for (int i = 1; i <= n; ++i)
        out<<d[i]<<" ";
    return 0;
}