Pagini recente » Cod sursa (job #2446310) | Cod sursa (job #822688) | Statistici Petrica Vladimir (petrica913) | Cod sursa (job #1265654) | Cod sursa (job #3216291)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
long long queue[100001], viz[100001], dist[100001], i = 0, k = 0, mat[100001][100001], n, m, s;
void citire() {
fin >> n >> m >> s;
for (int cont = 1; cont <= m; cont++) {
int x,y;
fin >> x >> y;
mat[x][y] = 1;
}
}
void reset() {
for (int cont = 1; cont <= n; cont++)
viz[cont] = 0;
}
void bfs(int node) {
viz[node] = 1;
for (int cont = 1; cont <= n; cont++)
if (mat[node][cont] && !viz[cont]) {
dist[cont] = dist[node]+1;
queue[++k] = cont;
}
if (i < k)
bfs(queue[++i]);
}
int main() {
citire();
bfs(s);
for (int i = 1; i <= n; i++)
if (i != s && !dist[i])
dist[i] = -1;
for (int i = 1; i <= n; i++)
fout << dist[i] << " ";
return 0;
}