Pagini recente » Cod sursa (job #1124395) | Cod sursa (job #2527220) | Cod sursa (job #2604719) | Cod sursa (job #2903283) | Cod sursa (job #635228)
Cod sursa(job #635228)
#include <fstream>
#include <vector>
using namespace std;
#define max 1000001
vector <int> a[max];
int n,cost[max], vecini[max], coada[max],m,s;
void bfs(int x){
int i,j,l=1;
for (i=1;i<=n;i++)
cost[i]=-1;
cost[x]=0;
coada[l]=x;
for (i=1;i<=l;i++)
for (j=0;j<vecini[coada[i]];j++)
if(cost[a[coada[i]][j]]==-1){
coada[++l]=a[coada[i]][j];
cost[coada[l]]=cost[coada[i]]+1;
}
}
int main(){
ifstream f("bfs.in",ifstream::in);
f>>n>>m>>s;
int x,y,c;
for (c=1;c<=m;c++){
f>>x>>y;
a[x].push_back(y);
}
for (c=1;c<=n;c++)
vecini[c]=a[c].size();
bfs(s);
ofstream g("bfs.out",ifstream::out);
for(c=1;c<=n;c++)
g<<cost[c]<<" ";
return 0;
}