Pagini recente » Cod sursa (job #2230262) | Cod sursa (job #2068163) | Cod sursa (job #2202779) | Cod sursa (job #2009877) | Cod sursa (job #1510582)
#include <fstream>
#include <vector>
using namespace std;
FILE *f=freopen("bfs.in","r",stdin);
FILE *g=freopen("bfs.out","w",stdout);
vector <int> G[100001];
int n,m,nod,c[100001];
int viz[100001];
void read();
void BFS(int);
void write();
int main(){
read();
write();
return 0;
}
void read(){
int x=0,y=0;
scanf("%d%d%d",&n,&m,&nod);
for (int i=1;i<=m;i++){
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
BFS(nod);
}
void BFS(int x){
int p=1,u=1;
c[p]=x;
viz[x]=1;
for (int j=1;j<=u;j++){
int y=c[j];
for (int i=0;i<G[y].size();i++){
int z=G[y][i];
if (!viz[z]){
viz[z]=viz[y]+1;
c[++u]=z;
}
}
}
}
void write(){
for (int i=1;i<=n;i++){
printf("%d ",viz[i]-1);
}
}