Pagini recente » Cod sursa (job #238659) | Cod sursa (job #2829982) | Cod sursa (job #2511490) | Cod sursa (job #192305) | Cod sursa (job #1067237)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define NMAX 100001
int i, j, N, M, S;
int a, b, Top, Bot;
int x;
int Coada[NMAX];
int Dist[NMAX];
vector <int> v[NMAX];
vector <int> :: iterator it;
bool Used[NMAX];
int main() {
fin >> N >> M >> S;
for (i = 1; i <= M; ++i) {
fin >> a >> b;
v[a].push_back(b);
}
Used[S] = true;
Bot = 1;
Coada[++Top] = S;
while (Bot <= Top) {
x = Coada[Bot];
++Bot;
for (it = v[x].begin(); it != v[x].end(); ++it) {
if (!Used[*it]) {
Dist[*it] = Dist[x] + 1;
Used[*it] = true;
Coada[++Top] = *it;
}
}
}
for (i = 1; i <= N; ++i)
if (!Dist[i] && i != S) fout << -1 << ' ';
else
fout << Dist[i] << ' ';
fout << '\n';
return 0;
}