Cod sursa(job #2798017)

Utilizator RobertLitaLita Robert RobertLita Data 10 noiembrie 2021 20:23:11
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <vector>
#include <fstream>
#define nmax 100001
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n,m,start;
vector<int> la[nmax];
int dist[nmax];

void bfs(int start)
{
    int c[nmax],p = 0,u = -1;
    c[++u] = start;
    dist[start] = 0;
    while(p <= u)
    {
        int x = c[p];
        for(auto i:la[x])
            if(dist[i] == -1)
            {
                c[++u] = i;
                dist[i] = dist[x] + 1;
            }
        p++;
    }
}

 int main()
 {
     int x, y, start;
     f >> n >> m >> start;
     for(int i = 1; i <= m; i++)
     {
         f >> x >> y;
         la[x].push_back(y);
     }
     for(int i = 1; i <= n; i++)
        dist[i] = -1;
     bfs(start);
     for(int i = 1; i <= n; i++)
        g << dist[i] << ' ';
     return 0;
 }