Cod sursa(job #2432167)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 22 iunie 2019 14:09:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> graph[100001];
int i, Nods, Arcs, Origins, dis[100001], x, y, q[100001];
bool viz[100001];
void bfs(int start){
    viz[start] = 1;
    int p = 0, u = 0;
    dis[start] = 0;
    q[p] = start;
    while(p <= u){
        int node = q[p];
        p++;
        for(int i = 0; i < graph[node].size(); i++)
            if(viz[graph[node][i]] == 0){
                q[++u] = graph[node][i];
                dis[graph[node][i]] = dis[node] + 1;
                viz[graph[node][i]] = 1;
            }
    }
}
int main()
{   f >> Nods >> Arcs >> Origins;
    for(i = 1; i <= Arcs; i++){
        f >> x >> y;
        graph[x].push_back(y);
    }
    bfs(Origins);
    for(i = 1; i <= Nods; i++)
        if(dis[i] == 0 && Origins != i)
            g << -1 << ' ';
        else
            g << dis[i] << ' ';
    return 0;
}