Pagini recente » Cod sursa (job #1666637) | Cod sursa (job #489144) | Cod sursa (job #3247438) | Cod sursa (job #462747) | Cod sursa (job #1695416)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
const int MAX_N = 10005;
int n, m, root, X, Y;
int res[MAX_N];
vector <int> G[MAX_N];
queue <int> Q;
void BFS(int node)
{
vector <int> :: iterator it;
res[node] = 0;
Q.push(node);
while (!Q.empty()) {
node = Q.front();
Q.pop();
for (it = G[node].begin(); it != G[node].end(); ++it) {
if (res[*it] == -1) {
res[*it] = res[node] + 1;
Q.push(*it);
}
}
}
}
int main()
{
ifstream cin("bfs.in");
ofstream cout("bfs.out");
cin >> n >> m >> root;
for (int i = 1; i <= m; ++i) {
cin >> X >> Y;
G[X].push_back(Y);
}
for (int i = 1; i <= n; ++i)
res[i] = -1;
BFS(root);
for (int i = 1; i <= n; ++i)
cout << res[i] << " ";
return 0;
}