Pagini recente » Cod sursa (job #795941) | Cod sursa (job #1729808) | Cod sursa (job #2402219) | Cod sursa (job #2828932) | Cod sursa (job #833285)
Cod sursa(job #833285)
#include <stdio.h>
#include <vector>
#define maxn 100010
using namespace std;
int g[maxn], cost[maxn], que[maxn], pos;
vector<int> a[maxn];
void BFS(int nod)
{
memset(cost, -1, sizeof(cost));
int i, j;
pos = 1;
que[pos] = nod;
cost[nod] = 0;
for (i=1; i<=pos; ++i)
for (j=0; j<g[que[i]]; ++j)
if (cost[a[que[i]][j]] == -1)
{
que[++pos] = a[que[i]][j];
cost[que[pos]] = 1 + cost[que[i]];
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int n, m, start, i, x, y;
scanf("%d%d%d", &n, &m, &start);
for (i=1; i<=m; ++i)
{
scanf("%d%d", &x, &y);
a[x].push_back(y);
}
for (i=1; i<=n; ++i)
g[i] = a[i].size();
BFS(start);
for (i=1; i<=n; ++i)
printf("%d ", cost[i]);
return 0;
}