Pagini recente » Cod sursa (job #1499293) | Cod sursa (job #2162594) | Cod sursa (job #2586242) | Cod sursa (job #495221) | Cod sursa (job #2576289)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s,a,b,i,j,nr,k,fiu,t,minim;
vector<int>L[100005];
int sol[100005],D[100005],maxim[100005];
void dfs(int nod){
sol[nod]=1;
for(int i=0;i<L[nod].size();i++){
int fiu=L[nod][i];
if(sol[fiu]==0){
if(1+D[nod]<=D[fiu]){
D[fiu]=1+D[nod];
}
dfs(fiu);
}
}
}
int main(){
fin>>n>>m>>s;
for(i=1;i<=m;i++){
fin>>a>>b;
L[a].push_back(b);
}
for(i=1;i<=n;i++){
D[i]=1000005;
}
D[s]=0;
dfs(s);
for(i=1;i<=n;i++){
if(D[i]==1000005){
fout<<"-1"<<" ";
continue;
}
fout<<D[i]<<" ";
}
return 0;
}