Pagini recente » Cod sursa (job #514265) | Cod sursa (job #883841) | Cod sursa (job #2788036) | Cod sursa (job #552009) | Cod sursa (job #1263468)
#include <iostream>
#include <vector>
#include <cstdlib>
#include <cstdio>
using namespace std;
int x, y, cost[100111], s[100111], l, w[100111], n, m, source;
vector <int> v[100111];
void bfs(int nod)
{
memset(cost, -1, sizeof(cost));
cost[nod] = 0;
s[1] = nod;
l = 1;
int i, j;
for(i = 1; i <= l; i++)
for(j = 0; j < w[s[i]]; j++)
if(cost[v[s[i]][j]] == -1)
{
s[++l] = v[s[i]][j];
cost[s[l]] = cost[s[i]] + 1;
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i, j;
scanf("%d%d%d", &n, &m, &source);
for(i = 1; i <= m; i++)
{
scanf("%d%d", &x, &y);
v[x].push_back(y);
}
for(i = 1; i <= n; i++)
w[i] = v[i].size();
bfs(source);
for(i = 1; i <= n; i++)
printf("%d ", cost[i]);
}