Pagini recente » Cod sursa (job #1128230) | Cod sursa (job #2084057) | Cod sursa (job #2185895) | Cod sursa (job #1321515) | Cod sursa (job #1536928)
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
using namespace std;
int s;
queue <int> q;
vector <int> v[100005];
int d[100005];
int main()
{
int n,m,x,y,i;
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d",&n,&m,&s);
for(i = 1;i <= m;i++){
scanf("%d %d",&x,&y);
if(x != y){
v[x].pb(y);
}
}
q.push(s);
for(i = 1;i <= n;i++){
d[i] = n+5;
}
d[s] = 0;
while(q.empty() == 0){
int nod = q.front();
q.pop();
for(auto it : v[nod]){
if(d[it] > d[nod]+1){
d[it] = d[nod]+1;
q.push(it);
}
}
}
for(i = 1;i <= n;i++){
if(s == i){
printf("0 ");
}else if(d[i] == n+5){
printf("-1 ");
}else{
printf("%d ",d[i]);
}
}
return 0;
}