Pagini recente » Cod sursa (job #2213810) | Cod sursa (job #3196055) | Cod sursa (job #106187) | Cod sursa (job #3231565) | Cod sursa (job #1995815)
#include <stdio.h>
#include <cstdio>
#include<queue>
#include <vector>
using namespace std;
int N,S,M;
vector<int> v[100003];
queue<int> q;
int dis[100003];
void bfs(int S){
dis[S]=1;
q.push(S);
while(!q.empty()){
int x=q.front();
q.pop();
for(unsigned int i=0;i<v[x].size();i++)
if(!dis[v[x][i]]){
dis[v[x][i]]=dis[x]+1;
q.push(v[x][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 a,b;
scanf("%d%d",&a,&b);
v[a].push_back(b);
}
bfs(S);
for(int i=1;i<=N;i++)printf("%d ",dis[i]-1);
}