Pagini recente » Cod sursa (job #1711115) | Cod sursa (job #2461630) | Cod sursa (job #1585032) | Cod sursa (job #2038992) | Cod sursa (job #668758)
Cod sursa(job #668758)
#include <cstdio>
#include <deque>
#include <vector>
#include <cstring>
using namespace std;
#define mk make_pair
vector<int> g[100002];
int n, m, s, cost[100002];
deque< pair<int, int> > d;
void bfs() {
int i, k, t;
d.push_back(mk(s, 0));
cost[s] = 0;
while(d.size() > 0) {
k = d[0].first; t = d[0].second;
d.pop_front();
for(i = 0; i < g[k].size(); ++i)
if(cost[g[k][i]] == -1) {
d.push_back(mk(g[k][i], t + 1));
cost[g[k][i]] = t + 1;
}
}
}
int main() {
int i, x, y;
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d%d%d", &n, &m, &s);
for(i = 1; i <= m; ++i) {
scanf("%d%d", &x, &y);
g[x].push_back(y);
}
memset(cost, -1, sizeof(cost));
bfs();
for(i = 1; i <= n; ++i)
printf("%d ", cost[i]);
printf("\n");
return 0;
}