Pagini recente » Cod sursa (job #734992) | Cod sursa (job #1305060) | Cod sursa (job #1621528) | Cod sursa (job #143796) | Cod sursa (job #1867130)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
#define NMAX 100001
int n, m, ind, s, x, y;
vector <int> a[NMAX];
int l[NMAX], S[NMAX], cost[NMAX];
void rez(int nod)
{
memset(cost, -1, sizeof(cost));
ind = 1;
cost[nod] = 0;
S[ind] = nod;
for (int i = 1; i <= ind; i++)
for (int j = 0; j < l[S[i]]; j++)
if (cost[a[S[i]][j]] == -1)
{
S[++ind] = a[S[i]][j];
cost[S[ind]] = cost[S[i]] + 1;
}
}
int main()
{
fin >> n >> m >> s;
for (int i = 1; i <= m; i++)
{
fin >> x >> y;
a[x].push_back(y);
}
for (int i = 1; i <= n; i++)
l[i] = a[i].size();
rez(s);
for (int i = 1; i <= n; i++)
fout << cost[i] << ' ';
return 0;
}