Pagini recente » Cod sursa (job #2177489) | Cod sursa (job #860726) | Cod sursa (job #2722041) | Cod sursa (job #77661) | Cod sursa (job #2785827)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector<vector<int> > edges;
vector<int> dist;
int root;
void citire(){
int n,m,a,b;
in>>n>>m>>root;
edges.resize(n);
dist.resize(n,-1);
for(int i=0; i<m; i++){
in>>a>>b;
a--;b--;
edges[a].push_back(b);
}
}
void afis(){
for(int i=0; i<edges.size(); i++){
for(int j=0; j<edges[i].size(); j++){
out<<edges[i][j]+1<<" ";
}
out<<"\n";
}
}
void bfs(int node){
int next;
queue<int> q;
q.push(node);
dist[node]=0;
while(!q.empty()){
node=q.front();
q.pop();
for(int i=0; i<edges[node].size(); i++){
next=edges[node][i];
if(dist[next]==-1){
q.push(next);
dist[next]=dist[node]+1;
}
}
}
}
int main()
{
int comp_conex=0;
citire();
bfs(root-1);
for(int i=0; i<edges.size(); i++){
out<<dist[i]<<" ";
}
return 0;
}