Pagini recente » Cod sursa (job #934580) | Cod sursa (job #1159106) | Cod sursa (job #1936416) | Cod sursa (job #117327) | Cod sursa (job #3243431)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector < vector <int> > v;
queue <int> vecini;
int dist[100001];
void bfs(int nod_start) {
vecini.push(nod_start);
dist[nod_start] = 1;
while(!vecini.empty()) {
int nod_crt = vecini.front();
vecini.pop();
for(auto vec:v[nod_crt])
if(!dist[vec]) {
dist[vec] = dist[nod_crt] + 1;
vecini.push(vec);
}
}
}
int main() {
int n, m, nod_start;
cin >> n >> m >> nod_start;
v.resize(n+1);
for(int i = 1; i <= m ; i++) {
int a, b;
cin >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
bfs(nod_start);
for(int i = 1; i <= n ; i++) {
if(i==nod_start) cout << 0 << ' ';
else if(dist[i]==0) cout << -1 << ' ';
else cout << dist[i]-1 << ' ';
}
return 0;
}