Pagini recente » Cod sursa (job #558585) | Cod sursa (job #1066763) | Cod sursa (job #2639308) | Cod sursa (job #2668711) | Cod sursa (job #728102)
Cod sursa(job #728102)
#include <fstream>
#include <vector>
using namespace std;
#define maxn 100001
vector <int> a[maxn];
int cost[maxn],c[maxn],n,m,s,b[maxn];
void citire(){
int i,x,y;
ifstream f("bfs.in");
f>>n>>m>>s;
for(i=1;i<=m;i++){
f>>x>>y;
a[x].push_back(y);}
f.close();}
void afisare(){
ofstream g("bfs.out");
for(int i=1;i<=n;i++)
g<<cost[i]<<" ";
g.close();}
void bfs(int s){
int u,p,i;
for(i=1;i<=n;i++)
cost[i]=-1;
u=1;
cost[s]=0;
c[u]=s;
for(p=1;p<=u;p++)
for(i=0;i<b[c[p]];i++)
if(cost[a[c[p]][i]]==-1){
u++;
c[u]=a[c[p]][i];
cost[c[u]]=cost[c[p]]+1;}}
int main(){
citire();
for(int i=1;i<=n;i++)
b[i]=a[i].size();
bfs(s);
afisare();
return 0;}