Cod sursa(job #2283009)

Utilizator radugnnGone Radu Mihnea radugnn Data 14 noiembrie 2018 20:58:43
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int v[100010],c[100010],n,cc,i,j,a,b,lng[100010],m,s;
vector<int> L[100010];
void bfs(int start) {
    v[start] = 1;
    c[1] = start;
    int p = 1, u = 1;
    while (p <= u) {
        int nod = c[p];
        for (i=0;i<L[nod].size();i++) {
            int vecin = L[nod][i];
            if (v[vecin] == 0) {
                c[++u] = vecin;
                lng[vecin]=lng[nod]+1;
                v[vecin] = 1;
            }
        }
        p++;
    }
}
int main()
{
   fin>>n>>m>>s;
   for(i=1;i<=m;i++){
        fin>>a>>b;
    L[a].push_back(b);
   }
   bfs(s);
   for(i=1;i<=n;i++)
    if(i==s)
        fout<<0<<" ";
   else
        if(lng[i]==0)
            fout<<-1<<" ";
        else
            fout<<lng[i]<<" ";


    return 0;
}