Pagini recente » Cod sursa (job #1081902) | Cod sursa (job #1935011) | Cod sursa (job #1508388) | Cod sursa (job #342072) | Cod sursa (job #2574882)
#include <bits/stdc++.h>
#define N_MAX 100005
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int N, M, root;
vector < int > G[N_MAX];
int D[N_MAX], vis[N_MAX];
void BFS(int currNode)
{
queue < int > Q;
Q.push(currNode);
vis[currNode] = 1;
D[currNode] = 0;
while (Q.size())
{
currNode = Q.front();
Q.pop();
for (int node: G[currNode])
if (vis[node] == 0)
{
D[node] = D[currNode] + 1;
vis[node] = 1;
Q.push(node);
}
}
}
int main()
{
fin >> N >> M >> root;
for (int i = 1; i <= M; i++)
{
int x, y;
fin >> x >> y;
G[x].push_back(y);
}
for (int i = 1; i <= N; i++)
D[i] = INT_MAX;
BFS(root);
for (int i = 1; i <= N; i++)
fout << (D[i] == INT_MAX ? -1 : D[i]) << " ";
return 0;
}