Pagini recente » Cod sursa (job #2154188) | Cod sursa (job #1158352) | Cod sursa (job #3265325) | Cod sursa (job #2116650) | Cod sursa (job #261662)
Cod sursa(job #261662)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int NMAX = 100000;
int n,m,s;
int d[NMAX];
vector<int> G[NMAX];
void bf ( int s ) {
queue<int> Q;
fill(d,d+n,-1);
for (d[s] = 0, Q.push(s); !Q.empty(); Q.pop()) {
for (vector<int>::iterator it = G[Q.front()].begin(); it != G[Q.front()].end(); ++it) {
if (d[*it] == -1) {
d[*it] = d[Q.front()] + 1;
Q.push(*it);
}
}
}
}
int main() {
freopen("bfs.in","rt",stdin);
freopen("bfs.out","wt",stdout);
scanf("%d %d %d",&n,&m,&s);
--s;
for (int i = 0, a,b; i < m; ++i) {
scanf("%d %d",&a,&b);
--a; --b;
G[a].push_back(b);
}
bf(s);
for (int i = 0; i < n; ++i) {
printf("%d ",d[i]);
}
printf("\n");
return 0;
}