Pagini recente » Cod sursa (job #3152712) | Cod sursa (job #1844242) | Cod sursa (job #885445) | Cod sursa (job #1238873) | Cod sursa (job #650596)
Cod sursa(job #650596)
#include <vector>
#include <fstream>
#define maxn 100010
using namespace std;
vector<int>vecini[maxn];
int lista[maxn];
int cost[maxn];
int x,m,n;
void citire(){
ifstream f("bfs.in");
int a,b;
f>>n>>m>>x;
for(int i=1;i<=m;i++){
f>>a>>b;
vecini[a].push_back(b);
}
f.close();
}
void init(){
for(int i=0;i<=n;i++)
cost[i]=-1;
}
void bf(){
lista[1]=x;
cost[x]=0;
int el_act=1,ult_el=1,nr,nod;
while(el_act<=ult_el){
nod=lista[el_act];
for(unsigned int i=0;i<vecini[nod].size();i++){
nr=vecini[nod][i];
if(cost[nr]==-1) {
lista[++ult_el]=nr;
cost[lista[ult_el]]=cost[nod]+1;
}
}
el_act++;
}
}
int main(){
citire();
init();
bf();
ofstream g("bfs.out");
for(int i=1;i<=n;i++)
g<<cost[i]<<' ';
g.close();
return 0;
}