Cod sursa(job #3316923)

Utilizator gpl12Giulia gpl12 Data 21 octombrie 2025 13:45:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

int d[100000],n,m,s,viz[100000];
vector<int> l[100000];

void citire(const char *nume_fisier, int &n, int &m, int &s, vector<int> l[100000]){
    ifstream f(nume_fisier);
    int x,y,i;
    f>>n>>m>>s;
    s--;
    for(i=0;i<m;i++){
        f>>x>>y;
        l[x-1].push_back(y-1);

    }
    f.close();
}

void bfs(int s){
    int x,i;
    queue<int> c;
    c.push(s);
    viz[s]=1;

    d[s]=0;
    while(c.size()>0){
        x=c.front();
        c.pop();
        for(i=0;i<l[x].size();i++){
            int y=l[x][i];
            if(viz[y]==0){
                c.push( y);
                viz[y]=1;
                d[y]=d[x]+1; 
            }
        }
    }
}
int main() {
    int n,m,s,i;
    citire("bfs.in",n,m,s,l);

    for(i=0;i<n;i++)
        d[i]=-1;

    bfs(s);
    ofstream f("bfs.out");

    for(i=0;i<n;i++)
        f<<d[i]<<" ";
    f.close();
    return 0;
}