Pagini recente » Cod sursa (job #2569209) | Cod sursa (job #940735) | Cod sursa (job #1122670) | Cod sursa (job #1919884) | Cod sursa (job #1725711)
#include<cstdio>
#include<vector>
#include<queue>
#define NMax 100001
using namespace std;
FILE *fin = freopen("bfs.in", "r", stdin);
FILE *fout = freopen("bfs.out", "w", stdout);
int N, M, S;
int dist[NMax];
vector < int > v[NMax];
queue < int > q;
int main()
{
scanf("%d%d%d", &N, &M, &S);
for (int i = 1, X, Y; i <= M; i++)
{
scanf("%d%d", &X, &Y);
v[X].push_back(Y);
}
for (int i = 1; i <= N; i++)
dist[i] = -1;
q.push(S);
dist[S] = 0;
vector < int > :: iterator it;
while (!q.empty())
{
int node = q.front();
q.pop();
for (it = v[node].begin(); it != v[node].end(); it++)
if (dist[*it] == -1)
{
dist[*it] = dist[node] + 1;
q.push(*it);
}
}
for (int i = 1; i <= N; i++)
printf("%d ", dist[i]);
}