Pagini recente » Cod sursa (job #2231644) | Cod sursa (job #1063443) | Cod sursa (job #2317896) | Cod sursa (job #2486967) | Cod sursa (job #2052922)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int NMAX = 100005;
vector <int>G[NMAX];
queue <int> coada;
int sol[NMAX];
int N,M,S;
void Read(){
in >> N >> M >> S;
int x, y;
for(int i = 0; i < M; ++i)
{
in >> x >> y;
G[x].push_back(y);
}
coada.push(S);
}
void BFS(int start){
for(int i = 1; i <= N; ++i)
sol[i] = -1;
sol[start] = 0;
while(!coada.empty()){
int nod = coada.front();
coada.pop();
for(int i = 0; i < G[nod].size(); ++i){
if(sol[G[nod][i]] == -1){
sol[G[nod][i]] = sol[nod] + 1;
coada.push(G[nod][i]);
}
}
}
}
void Print(){
for(int i = 1; i <= N; ++i)
out << sol[i] << " ";
out << "\n";
}
int main()
{
Read();
BFS(S);
Print();
return 0;
}