Pagini recente » Cod sursa (job #132203) | Cod sursa (job #2652843) | Cod sursa (job #2490637) | Cod sursa (job #3160825) | Cod sursa (job #1009854)
#include <stdio.h>
#include <queue>
#include <vector>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define N 100000
using namespace std;
deque<int>q;
vector<int>out[N];
bool c[N];
int d[N];
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m,s,a,b;
scanf("%i%i%i",&n,&m,&s);--s;
fr(i,0,m){
scanf("%i%i",&a,&b);--a;--b;
out[a].push_back(b);
}
d[s]=0;
c[s]=true;
q.push_back(s);
while(!q.empty()){
int i=q.front();
fr(j,0,out[i].size()){
int id=out[i][j];
if(!c[id]){
c[id]=true;
d[id]=d[i]+1;
q.push_back(id);
}
}
q.pop_front();
}
fr(i,0,n){if(i)printf(" ");printf("%i",c[i]?d[i]:-1);}printf("\n");
return 0;
}