Pagini recente » Cod sursa (job #2727780) | Cod sursa (job #870519) | Cod sursa (job #704703) | Cod sursa (job #2779541) | Cod sursa (job #2483259)
#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[*i]=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;
}