Cod sursa(job #3243887)

Utilizator uncle_sam_007ioan bulik uncle_sam_007 Data 22 septembrie 2024 09:53:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

const int NMAX=1e5+5;
bool viz[NMAX];
int sol[NMAX];
int n;
vector <int>g[NMAX];

void reset(){
    for(int i=1;i<=n;++i){
        viz[i]=0;
    }
}

void BFS(int st){
    queue <int>q;
    viz[st]=1;
    q.push(st);
    while(!q.empty()){
        int h=q.front();
        q.pop();
        for(int i:g[h]){
            if(!viz[i]){
                sol[i]=sol[h]+1;
                q.push(i);
                viz[i]=1;
            }
        }
    }
}

int main()
{
    int start,m,x,y;
    fin>>n>>m>>start;
    for(int i=1;i<=m;++i){
        fin>>x>>y;
        g[x].push_back(y);
    }
    for(int i=1;i<=n;++i){
        sol[i]=-1;
    }
    sol[start]=0;
    BFS(start);
    for(int i=1;i<=n;++i){
        fout<<sol[i]<<" ";
    }
    return 0;
}