Pagini recente » Rating alin bucuresteanu (mihaita007) | Istoria paginii runda/rar11/clasament | Cod sursa (job #105101) | Cod sursa (job #2527380) | Cod sursa (job #2924608)
#include <fstream>
using namespace std;
ifstream fin ("BFS.in");
ofstream out("BFS.out");
int q[101], p, u, viz[101], ans[101], aux[101];
int v[101][101];
int n, m, x;
void BFS ()
{
for(int i = 1; i<= n; i++){
ans[i] = -1;
}
ans[x] = 0;
p = u = 1;
q[u] = x;
viz[x]++;
aux[1] = x;
int nr = 1;
while(p <= u)
{
int nod = q[p];
p++;
if(aux[nr] == nod){
nr++;
}
int ult;
for(int i = 1; i<= n; i++)
{
if(v[nod][i] == 1 && viz[i] == 0)
{
u++;
q[u] = i;
viz[i]++;
ans[i] = nr - 1;
ult = i;
}
}
aux[nr] = ult;
}
}
int main()
{
fin >> n >> m >> x;
for(int i = 1; i<= m; i++)
{
int a, b;
fin >> a >> b;
v[a][b] = 1;
}
BFS();
for(int i = 1; i <= n; i++){
out<<ans[i]<<' ';
}
return 0;
}