Pagini recente » Cod sursa (job #348260) | Cod sursa (job #2526082) | Cod sursa (job #1426993) | Cod sursa (job #1846349) | Cod sursa (job #1464480)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#define Nmax 100002
using namespace std;
int n, i, j, m, x, nre[Nmax];
vector < int > V[Nmax];
deque < int > q;
void read()
{
int a, b;
scanf("%d %d %d", &n, &m, &x);
for (i = 1; i <= m; ++ i)
{
scanf("%d %d", &a, &b);
V[a].push_back(b);
}
}
void bfs()
{
int node;
q.push_back(x);
memset(nre, -1, sizeof(nre));
nre[x] = 0;
while (!q.empty())
{
node = q.front();
q.pop_front();
for (i = 0; i < V[node].size(); ++ i)
if (nre[V[node][i]] == -1)
{
nre[V[node][i]] = nre[node] + 1;
q.push_back(V[node][i]);
}
}
}
void write()
{
int i;
for (i = 1; i <= n; ++ i)
printf("%d ", nre[i]);
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
read();
bfs();
write();
return 0;
}