Pagini recente » Cod sursa (job #283361) | Cod sursa (job #2385049) | Cod sursa (job #1728155) | Cod sursa (job #953022) | Cod sursa (job #1033857)
#include<vector>
#include<cstdio>
#include<queue>
using namespace std;
const int Lim = 100003;
vector<int> V[Lim];
queue<int> Q;
int dist[Lim];
int N,M,S;
void bfs(){
dist[S]=1;
Q.push(S);
while(!Q.empty()){
vector<int>::iterator it;
for(it=V[Q.front()].begin() ; it<V[Q.front()].end(); it++)
if(!dist[*it]){
Q.push(*it);
dist[*it]=dist[Q.front()]+1;
}
Q.pop();
}
}
int main(){
FILE *in=fopen("bfs.in","r");
FILE *out=fopen("bfs.out","w");
fscanf(in,"%d%d%d",&N,&M,&S);
int a,b;
for(int i = 1 ; i <= M ; ++i){
fscanf(in,"%d%d",&a,&b);
V[a].push_back(b);
}
fclose(in);
bfs();
for(int i = 1 ; i <= N ; ++i)
fprintf(out,"%d ",dist[i]-1);
fclose(out);
return 0;
}