Pagini recente » Cod sursa (job #1345228) | Cod sursa (job #452700) | Cod sursa (job #1334635) | Cod sursa (job #2151623) | Cod sursa (job #1400985)
#include <fstream>
#include <vector>
#define nmax 1000050
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> v[nmax], cd;
int N, M, S, poz = 1, c, nr,Cost[nmax], ocupat[nmax];
void mark(int nod){
int j;
for(j = 1; j <= v[nod].size(); ++j){
if(!ocupat[j]){
cd.push_back(v[nod][j]);
if(Cost[j])
Cost[j] = min(Cost[j], Cost[nod] + 1);
else Cost[j] = Cost[nod] + 1;
}
}
}
void BFS(){
int i;
for(i = 1; i <= cd.size(); ++i){
ocupat[cd[i]] = true;
mark(cd[i]);
}
}
int main()
{int i, x, y;
f>>N>>M>>S;
for(i = 1; i <= M; ++i){
f>>x>>y;
v[x].push_back(y);
}
cd.push_back(S);
Cost[S] = 1;
BFS();
for(i = 1; i <= N; ++i){
g<<Cost[i] - 1 <<' ';
}
return 0;
}