Pagini recente » Cod sursa (job #2549203) | Cod sursa (job #1688925) | Cod sursa (job #2988602) | Cod sursa (job #1676507) | Cod sursa (job #2288952)
#include <cstdio>
#include <vector>
#include <queue>
#include <bitset>
using std::vector;
using std::queue;
using std::bitset;
const int MAX = 1000001;
int n,m,s,dist[MAX];
bitset <MAX> viz;
vector<int> G[MAX];
queue<int>q;
/*
void BFS(int node){
for(auto i:G[node]){
if(!viz[i]){
printf("%d ",i);
viz[i]=true;
}
BFS(i);
}
}
*/
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&s);
for(int i=0;i<m;++i){
int x,y;
scanf("%d %d",&x,&y);
G[x].push_back(y);
}
q.push(s);
viz[s]=true;
while(!q.empty()){
int node=q.front();
q.pop();
for(auto i:G[node]) {
if (!viz[i]) {
viz[i] = true;
q.push(i);
dist[i]=dist[node]+1;
}
}
}
for(int i=1;i<=n;++i){
if(dist[i] || i==s) printf("%d ",dist[i]);
else printf("-1 ");
}
return 0;
}