Pagini recente » Cod sursa (job #2431184) | Cod sursa (job #2198580) | Cod sursa (job #1832027) | Cod sursa (job #280735) | Cod sursa (job #2792845)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin ( "bfs.in" );
ofstream cout ( "bfs.out" );
#define NMAX 100000
#define MMAX 1000000
struct GRAF {
int nod, dist;
};
vector<GRAF> v[NMAX + 1];
queue<GRAF> BFS;
int ans[NMAX + 1], dist;
void bfs() {
GRAF elem;
while ( !BFS.empty() ) {
elem = BFS.front();
for ( auto copil: v[elem.nod] ) {
if ( ans[copil.nod] == 0 ) {
BFS.push({copil.nod, elem.dist + 1});
ans[copil.nod] = elem.dist + 1;
}
}
dist++;
BFS.pop();
}
}
int main() {
int n, m, s, i, x, y;
cin >> n >> m >> s;
for ( i = 0; i < m; i++ ) {
cin >> x >> y;
v[x].push_back({y, 1});
}
BFS.push({s, 1});
ans[s] = 1;
bfs();
for ( i = 1; i <= n; i++ ) {
if ( ans[i] == 0 ) {
cout << "-1 ";
}
else {
cout << ans[i] - 1 << " ";
}
}
return 0;
}