Pagini recente » Cod sursa (job #2350819) | Cod sursa (job #1597562) | Cod sursa (job #2972442) | Cod sursa (job #15303) | Cod sursa (job #2671323)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> graf[100001];
int n,m,start;
int distanta[100001];
void citire(){
int x, y;
f>>n>>m>>start;
for(int i=1;i<=m;i++){
f>>x>>y;
graf[x].push_back(y);
}
}
void BFS(int x){
queue <int> coada;
int nod;
for(int i=1;i<=n;i++)
distanta[i]=-1;
coada.push(x);
distanta[x]=0;
while(!coada.empty()) {
nod=coada.front();
coada.pop();
for(int i=0; i < graf[nod].size(); i++)
if(distanta[graf[nod][i]] == -1)
{
coada.push(graf[nod][i]);
distanta[graf[nod][i]] = distanta[nod] + 1;
}
}
}
void afisare(){
for(int i=1;i<=n;i++)
g<<distanta[i]<<" ";
}
int main(){
citire();
BFS(start);
afisare();
return 0;
}