Pagini recente » Cod sursa (job #2839373) | Cod sursa (job #3166362) | Cod sursa (job #1110891) | Cod sursa (job #2837860) | Cod sursa (job #3181584)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
const int NMAX = 100005;
const int MMAX = 1000005;
vector < int > G[NMAX];
int N, M, S;
int viz[NMAX];
int dist[NMAX];
queue < int > q;
void read() {
fin >> N >> M >> S;
for (int i = 1; i <= M; i++) {
int x, y;
fin >> x >> y;
G[x].push_back(y);
}
}
void bfs() {
q.push(S);
viz[S] = 1;
while (!q.empty()) {
int nodc = q.front();
q.pop();
for (int i = 0; i < G[nodc].size(); i++) {
int vecin = G[nodc][i];
if (viz[vecin] == 0) {
q.push(vecin);
dist[vecin] = dist[nodc] + 1;
viz[vecin] = 1;
}
}
}
}
int main()
{
read();
bfs();
cout << endl;
for (int i = 1; i <= N; i++) {
if (viz[i] == 0)
fout << -1 << " ";
else
fout << dist[i] << " ";
}
return 0;
}