Pagini recente » Cod sursa (job #2742111) | Cod sursa (job #1976801) | Cod sursa (job #1174210) | Cod sursa (job #2977578) | Cod sursa (job #694488)
Cod sursa(job #694488)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define Nmax 100001
int N, M, S, D[Nmax];
vector<int> G[Nmax];
queue<int> Q;
void BF(int S) {
int nod;
fill(D+1,D+N+1,-1);
D[S]=0;
Q.push(S);
while(!Q.empty()) {
nod=Q.front();
for(vector<int>:: iterator it=G[nod].begin(); it!=G[nod].end(); ++it)
if(D[*it]==-1) {
D[*it]=D[nod]+1;
Q.push(*it);
}
Q.pop();
}
}
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int i, j;
scanf("%d %d %d",&N,&M,&S);
while(M--) {
scanf("%d %d",&i,&j);
G[i].push_back(j);
}
BF(S);
for(i=1; i<=N; i++)
printf("%d ",D[i]);
printf("\n");
return 0;
}