Pagini recente » Cod sursa (job #796688) | Cod sursa (job #1686413) | Cod sursa (job #709714) | Cod sursa (job #2756929) | Cod sursa (job #2455040)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define ARRAY_MAX 100005
queue <int> Queue;
vector <int> Edge[ARRAY_MAX];
int M, N, X, Y, Node, startNode, Next;
int Distance[ARRAY_MAX];
void BFS() {
while (!Queue.empty()) {
Node = Queue.front();
Queue.pop();
for (unsigned i = 0; i < Edge[Node].size(); i++) {
Next = Edge[Node][i];
if (Distance[Next] == -1) {
Distance[Next] = Distance[Node] + 1;
Queue.push(Next);
}
}
}
}
void Read() {
fin >> N >> M >> startNode;
for (int i = 1; i <= M; i++) {
fin >> X >> Y;
Edge[X].push_back(Y);
}
}
void Write() {
for (int i = 1; i <= N; i++)
Distance[i] = -1;
Distance[startNode] = 0;
Queue.push(startNode);
BFS();
for (int i = 1; i <= N; i++)
fout << Distance[i] << " ";
}
int main() {
ios_base::sync_with_stdio(false);
Read();
Write();
}