Pagini recente » Cod sursa (job #2345658) | Cod sursa (job #423204) | Cod sursa (job #2405062) | Cod sursa (job #2640363) | Cod sursa (job #601457)
Cod sursa(job #601457)
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
typedef vector<int>::iterator it;
vector<int> gf[100001];
int use[100001], x, y, s, n, m, dist[100001];
void bfs (int s){
queue<int> c;
memset(dist,-1,sizeof(dist));
use[s]=1;
dist[s]=0;
for (c.push(s);c.size();c.pop()){
for (it i=gf[c.front()].begin();i!=gf[c.front()].end();++i)
if (0==use[*i]){
use[*i]=1;
dist[*i]=dist[c.front()]+1;
c.push(*i);
}
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d", &n, &m, &s);
for (int i=1;i<=m;i++){
scanf("%d%d", &x, &y);
gf[x].push_back(y);
}
bfs(s);
for(int i=1;i<=n;++i) printf("%d ", dist[i]);
return 0;
}