Pagini recente » Cod sursa (job #1775659) | Cod sursa (job #1887648) | Cod sursa (job #2282371) | Cod sursa (job #1630544) | Cod sursa (job #2871015)
#include <fstream>
#include <iostream>
#include <math.h>
#include <set>
#include <queue>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int coada[100001], f[100001], n, m;
vector <int> l[100001];
void bfs(int nod)
{
int p, u, x, i;
u = p = 1;
coada[p] = nod;
f[nod] = 1;
while (p <= u)
{
x = coada[p];
for (i = 0; i< l[x].size(); i++)
if(f[l[x][i]] == 0)
{
u++;
coada[u] = l[x][i];
f[l[x][i]] = f[x] + 1;
}
p++;
}
}
int main()
{
int i, k, x, y;
fin >> n >> m >> k;
for (i = 1; i<= m; i++)
{
fin >> x >> y;
l[x].push_back(y);
}
bfs(k);
for (i =1; i<= n; i++)
if(i != k)
{
if(f[i] > 0)
fout << f[i] - 1 << " ";
else
fout << "-1 ";
}
else
fout << "0 ";
}