Pagini recente » Cod sursa (job #919701) | Cod sursa (job #301714) | Cod sursa (job #725606) | Cod sursa (job #3183826) | Cod sursa (job #2529604)
#include<fstream>
#include<vector>
#include<list>
using namespace std;
ifstream f("bfs.in");
ofstream o("bfs.out");
int vf, m, s;
list<int>*Adj;
void init(){
Adj=new list<int>[vf];
}
void addEdge(int x, int y){
Adj[x-1].push_back(y-1);
}
void bfs(int s){
int c;
list<int>::iterator i;
vector<int>dist(vf, -1);
list<int>q;
dist[s]=0;
q.push_back(s);
while(!q.empty()){
c=q.front();
q.pop_front();
for(i=Adj[c].begin();i!=Adj[c].end();i++){
if(dist[*i]==-1){
dist[*i]=dist[c]+1;
q.push_back(*i);
}
}
}
for(int i=0;i<vf;i++){
o<<dist[i]<<" ";
}
}
int main(){
int x, y;
f>>vf>>m>>s;
init();
for(int i=0;i<m;i++){
f>>x>>y;
addEdge(x, y);
}
bfs(s-1);
}