Pagini recente » Cod sursa (job #1166668) | Cod sursa (job #3243532) | Cod sursa (job #991927) | Cod sursa (job #728832) | Cod sursa (job #1698790)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int D[100010], N, M, S;
vector<int> G[100010];
queue<int> Q;
void BFS(int S)
{
Q.push(S);
D[S] = 1;
while (Q.size())
{
int e = Q.front();
for (int i = 0;i < G[e].size();++i)
{
if (!D[G[e][i]])
{
D[G[e][i]] = D[e] + 1;
Q.push(G[e][i]);
}
}
Q.pop();
}
}
int main()
{
in >> N >> M >> S;
for (int i = 1;i <= M;++i)
{
int x, y;
in >> x >> y;
G[x].push_back(y);
}
BFS(S);
for (int i = 1;i <= N;++i)
out << D[i] - 1 << " ";
return 0;
}