Cod sursa(job #3200184)

Utilizator Iustin2812Ion Iustin Ciprian Iustin2812 Data 3 februarie 2024 19:36:40
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> l[1000001];
queue <int> q;
int n;
int viz[100001];

void bfs(int ni){
    for(int i=1;i<=n;i++)
        viz[i]=-1;
    
    q.push(ni);
    viz[ni]=0;
    
    while(!q.empty()){
        
        for(int node:l[q.front()]){
            if(viz[node]==-1){
                q.push(node);
                viz[node]=viz[q.front()]+1;
            }
        }
        q.pop();
    }
}

int main() {
    int m,p;
    fin>>n>>m>>p;
    int x,y;
    for(int i=1;i<=m;i++){
        fin>>x>>y;
        l[x].push_back(y);
    }
    bfs(p);
    for(int i=1;i<=n;i++){
        fout<<viz[i]<<" ";
    }
    return 0;
}