Pagini recente » Cod sursa (job #984546) | Cod sursa (job #419840) | Cod sursa (job #1245754) | Cod sursa (job #770846) | Cod sursa (job #841331)
Cod sursa(job #841331)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector <int> V[100005];
int q[100005];
int G[100005],cost[1000005];
int n,m,s;
int in = 1,sf = 1;
ifstream f("bfs.in");
ofstream g("bfs.out");
void bfs(int nod){
q[sf] = nod;
cost[nod] = 0;
while(in <= sf){
for(int j=0;j<G[q[in]];j++){
if(cost[V[q[in]][j]] == -1){
q[++sf] = V[q[in]][j];
cost[q[sf]] = cost[q[in]]+1;
}
}
in++;
}
}
int main(){
int x,y;
f >> n >> m >> s;
for(int i=1;i<=m;i++){
f >> x >> y;
V[x].push_back(y);
}
for(int i=1;i<=n;i++)
G[i] = V[i].size();
for(int i=1;i<=n;i++)
cost[i] = -1;
bfs(s);
for(int i=1;i<=n;i++)
g << cost[i] << " ";
f.close();
g.close();
return 0;
}