Pagini recente » Cod sursa (job #305628) | Cod sursa (job #1650077) | Cod sursa (job #1674383) | Cod sursa (job #2934158) | Cod sursa (job #2764767)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
const int NLIM = 100005;
int n, m, s;
int Distanta[NLIM];
vector<int> Muchii[NLIM];
queue<int> Q;
void bfs(){
int nod;
while(!Q.empty()){
nod = Q.front();
Q.pop();
for (unsigned int i = 0; i < Muchii[nod].size(); ++i)
{
int vecin = Muchii[nod][i];
if(Distanta[vecin]==-1)
Distanta[vecin] = Distanta[nod] + 1,
Q.push(vecin);
}
}
}
void afisare(){
for (int i = 1; i <= n;++i)
cout << Distanta[i] << ' ';
}
void citire(){
cin >> n >> m >> s;
for (int i = 1; i <= m;++i){
int x, y;
cin >> x >> y;
Muchii[x].push_back(y);
}
for (int i = 1; i <= n;++i)
Distanta[i] = -1;
Distanta[s] = 0;
Q.push(s);
bfs();
afisare();
}
int main()
{
citire();
return 0;
}