Cod sursa(job #3361626)

Utilizator RaduBalasRadu Andrei Balas RaduBalas Data 26 iulie 2026 18:21:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;
vector<int> bfs(int src, vector<vector<int>>& edges) {
    unsigned int nod,i,vecin;
    queue<int> q;
    vector<int> dist(edges.size(),-1);
    q.push(src);
    dist[src]=0;
    while(!q.empty()){
        nod=q.front();
        q.pop();
        for(i=0;i<edges[nod].size();i++){
            vecin=edges[nod][i];
            if(dist[vecin]==-1){
                dist[vecin]=dist[nod]+1;
                q.push(vecin);
            }
        }
    }
    return dist;
}
int main() {
    FILE *fin, *fout;
    fin=fopen("bfs.in","r");
    fout=fopen("bfs.out","w");
    int n,m,s,i,a,b;
    fscanf(fin,"%d%d%d",&n,&m,&s);
    s--;
    vector<vector<int>> edges(n);
    for(i=0;i<m;i++){
        fscanf(fin,"%d%d",&a,&b);
        a--;
        b--;
        edges[a].push_back(b);
    }
    vector<int> dist=bfs(s, edges);
    for(i=0;i<n;i++)
        fprintf(fout,"%d ",dist[i]);
    return 0;
}