Pagini recente » Cod sursa (job #2822910) | Cod sursa (job #416491) | Cod sursa (job #1581999) | Cod sursa (job #331416) | Cod sursa (job #2422296)
#include<fstream>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int maxn = 100010;
int N, M, Start;
vector<int> A[maxn];
int vizite[maxn], Cost[maxn];
void BFS(int nod) {
memset(Cost, -1, sizeof(Cost));
queue<int> coada;
coada.push(nod);
Cost[nod] = 0;
vizite[nod] = 1;
while (!coada.empty()) {
int v = coada.front();
coada.pop();
for (int i = 0; i < A[v].size(); ++i)
if (vizite[A[v][i]] == 0) {
coada.push(A[v][i]);
Cost[A[v][i]] = Cost[v] + 1;
vizite[A[v][i]] = 1;
}
}
}
int main() {
fin >> N >> M >> Start;
for (int i = 0; i < M; ++i) {
int x, y;
fin >> x >> y;
A[x].push_back(y);
}
// for(int i=1;i<=N;++i)
// G[i]=A[i].size();
BFS(Start);
for (int i = 1; i <= N; ++i)
fout << Cost[i] << ' ';
fin.close();
fout.close();
return 0;
}