Pagini recente » Cod sursa (job #1483022) | Cod sursa (job #3125602) | Cod sursa (job #2315555) | Cod sursa (job #2576186) | Cod sursa (job #2222509)
#include<cstdio>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
const int NMAX=100005;
vector<int> g[NMAX];
vector<int> viz;
vector<int>:: iterator it;
void bfs(int u){
queue<int> q;
viz[u]=0;
q.push(u);
while(!q.empty()){
u=q.front();
q.pop();
for(it=g[u].begin();it!=g[u].end();it++){
int v=*it;
if(viz[v]==-1){
viz[v]=viz[u]+1;
q.push(v);
}
}
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m,s;
scanf("%d%d%d", &n, &m, &s);
for(int i=1;i<=m;i++){
int u,v;
scanf("%d%d", &u, &v);
g[u].push_back(v);
}
viz.assign(n+1, -1);
bfs(s);
for(int i=1;i<=n;i++)
printf("%d ", viz[i]);
return 0;
}