Pagini recente » Cod sursa (job #806577) | Cod sursa (job #94194) | Cod sursa (job #66615) | Cod sursa (job #3236480) | Cod sursa (job #1981903)
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int nmax=100001;
vector<int> G[nmax];
queue<int> q;
vector<int> viz;
vector<int> d;
vector<int> t;
void bfs(int u){
viz[u]=1;
d[u]=0;
q.push(u);
int v;
while (!q.empty()){
u=q.front();
for (int j=0;j<(int)G[u].size();j++){
v=G[u][j];
if (!viz[v]){
viz[v]=1;
t[v]=u;
d[v]=d[u]+1;
q.push(v);
}
}
q.pop();
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m,s;
scanf("%d%d%d",&n,&m,&s);
viz.assign(n,0);
d.assign(n,-1);
t.assign(n,0);
for (int i=1,x,y;i<=m;i++){
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
bfs(s);
for (int i=1;i<=n;i++){
printf("%d ",d[i]);
}
return 0;
}