Pagini recente » Cod sursa (job #1803316) | Cod sursa (job #3266130) | Cod sursa (job #1926594) | rhino-pilot | Cod sursa (job #2217590)
/**
* Worg
*/
#include <queue>
#include <cstdio>
#include <vector>
FILE *fin = freopen("bfs.in", "r", stdin); FILE *fout = freopen("bfs.out", "w", stdout);
/*-------- Data --------*/
int n, m, s;
std::vector<std::vector<int > > graph;
/*-------- --------*/
void ReadInput() {
scanf("%d%d%d", &n, &m, &s); graph.resize(n + 1);
for(int i = 0; i < m; i++) {
int u, v; scanf("%d%d", &u, &v);
graph[u].push_back(v);
}
}
void BFS() {
std::vector<int > dist(n + 1, n + 1);
dist[s] = 0;
std::queue<int > q; q.push(s);
while(!q.empty()) {
int node = q.front(); q.pop();
for(auto& itr : graph[node]) {
if(dist[itr] == n + 1) {
dist[itr] = dist[node] + 1;
q.push(itr);
}
}
}
for(int i = 1; i <= n; i++) {
printf("%d ", dist[i] == (n + 1) ? -1 : dist[i]);
}
}
int main() {
ReadInput();
BFS();
return 0;
}