Pagini recente » Cod sursa (job #113196) | Cod sursa (job #2227633) | Cod sursa (job #1275637) | Cod sursa (job #2081730) | Cod sursa (job #1765356)
#include<bits/stdc++.h>
#define N 100050
using namespace std;
int n, m, cd, source;
vector <int> lda[N];
int v[N], s[N], c[N];
void bfs(int nod)
{
int i, j;
for (i = 1; i <= n; i++) c[i] = -1;
cd = 1;
c[nod] = 0;
s[1] = nod;
for (i = 1; i <= cd; i++)
for (j = 0; j < v[s[i]]; j++)
if (c[lda[s[i]][j]] == -1)
{
s[++cd] = lda[s[i]][j];
c[s[cd]] = c[s[i]] + 1;
}
}
int main()
{
int i, x, y;
freopen("grader_test9.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d%d%d ", &n, &m, &source);
for (i = 1; i <= m; i++)
{
scanf("%d%d ", &x, &y);
lda[x].push_back(y);
}
for (i = 1; i <= n; i++) v[i] = lda[i].size();
bfs(source);
for (i = 1; i <= n; i++) printf("%d ", c[i]);
return 0;
}