Pagini recente » Cod sursa (job #1089128) | Cod sursa (job #1211891) | Cod sursa (job #383953) | Cod sursa (job #1532528) | Cod sursa (job #1536096)
#include<queue>
#include<vector>
#include<fstream>
using namespace std;
ifstream fi("bfs.in");
ofstream fo("bfs.out");
const int MAX_N = 100005;
vector <int> a[MAX_N];
int i,n,m,x,y,nod_start,d[MAX_N];
void bfs(int nod_start, int d[]){
queue <int> q;
for(int i=1;i<=n;i++) d[i] = -1;
q.push(nod_start); d[nod_start] = 0;
while(!q.empty()){
int x = q.front();
q.pop();
for(unsigned int j=0;j<a[x].size();j++)
if(d[a[x][j]] == -1){
int y = a[x][j];
d[y] = d[x] + 1;
q.push(y);
}
}
}
int main(){
fi>>n>>m>>nod_start;
for(i=1;i<=m;i++){
fi>>x>>y;
a[x].push_back(y);
}
bfs(nod_start, d);
for(i=1;i<=n;i++) fo<<d[i]<<" ";
fi.close();
fo.close();
return 0;
}