Pagini recente » Istoria paginii utilizator/dogdaysareover | Monitorul de evaluare | Cod sursa (job #993964) | Cod sursa (job #2233145) | Cod sursa (job #1927853)
#include <cstdio>
#include <queue>
#include <vector>
#define N 100001
using namespace std;
vector <int> G[N];
int n,start,dist[N];
void Read(){
int m,x,y;
freopen("bfs.in","r",stdin);
scanf("%d%d%d",&n,&m,&start);
while (m--){
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
}
void Bfs(){
queue <int> Q;
int node,i;
Q.push(start);dist[start]=1;
while (!Q.empty()){
node=Q.front();Q.pop();
for (i=0;i<G[node].size();++i)
if (!dist[G[node][i]]) {
Q.push(G[node][i]);
dist[G[node][i]]=dist[node]+1;
}
}
}
void Write(){
int i;
freopen("bfs.out","w",stdout);
for (i=1;i<=n;++i)
printf("%d ",dist[i]-1);
}
int main()
{
Read();
Bfs();
Write();
return 0;
}