Cod sursa(job #2483250)

Utilizator OvidRata Ovidiu Ovid Data 29 octombrie 2019 16:27:26
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;
#define pb push_back


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



int n, m, s,x, y;
vector<vector<int> > g; vector<int> sol;
vector<bool> v;



void build(){
fin>>n>>m>>s;
sol.assign(n+1, -1);
g.assign(n+1, vector<int>() );
v.assign(n+1, false);

for(int i=0; i<m; i++){
fin>>x>>y;
g[x].pb(y);
g[y].pb(x);
}

}



int bfs( pair<int, int> s){

queue<pair<int, int> > q;
pair<int, int> f;
q.push(s);
sol[s.first]=s.second;
v[s.first]=true;
while(!q.empty() ){
f=q.front();
q.pop();


for(auto i=g[f.first].begin(); i!=g[f.first].end(); i++){
   if(v[*i]!=true){
       v[f.first]=true;
   sol[*i]=f.second+1;q.push(make_pair(*i, f.second+1)); }     
}


        }


}






int main(){

build();
bfs(make_pair(s, 0));
for(int i=1; i<=n; i++){fout<<sol[i]<<" ";}

    return 0;
}