Pagini recente » Cod sursa (job #119515) | Cod sursa (job #572367) | Cod sursa (job #1071554) | Cod sursa (job #2905301) | Cod sursa (job #601407)
Cod sursa(job #601407)
#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));
c.push(s);
use[s]=1;
dist[s]=0;
while (!c.empty()){
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);
}
c.pop();
}
}
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;
}