Pagini recente » Cod sursa (job #1924436) | Cod sursa (job #3289232) | Cod sursa (job #3286949) | Cod sursa (job #3248345) | Cod sursa (job #675936)
Cod sursa(job #675936)
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define pb push_back
#define forit(it, v) for(__typeof(v.begin()) it = v.begin(); it != v.end(); ++it)
const int MAX_N = 100001;
const int INF = 0x3f3f3f3f;
int n, m, sursa;
int d[MAX_N], q[2 * MAX_N];
vector <int> v[MAX_N];
void bfs(int nod)
{
int i, j, l, r;
q[l = r = 1] = nod;
for (; l <= r; ++l)
forit(it, v[q[l]])
if (d[*it] > d[q[l]] + 1)
{
d[*it] = d[q[l]] + 1;
q[++r] = *it;
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d\n", &n, &m, &sursa);
for (int i = 1; i <= m; ++i)
{
int x, y;
scanf("%d %d", &x, &y);
v[x].pb(y);
}
memset(d, INF, sizeof(d));
d[sursa] = 0;
bfs(sursa);
for (int i = 1; i <= n; ++i)
printf("%d ", (d[i] != INF) ? d[i] : -1);
}