Pagini recente » Cod sursa (job #1201931) | Cod sursa (job #1189441) | Cod sursa (job #2204045) | Cod sursa (job #2852842) | Cod sursa (job #517828)
Cod sursa(job #517828)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
const int Nmax = 100001;
vector <int> G[Nmax];
int N, M, Start, cost[Nmax];
void bfs(int Start) {
queue <int> Q;
int i;
memset(cost,-1,sizeof(cost));
cost[Start]=0;
Q.push(Start);
while(!Q.empty()) {
i=Q.front();
vector <int> :: iterator it;
for(it=G[i].begin(); it!=G[i].end(); it++)
if(cost[*it]==-1) {
Q.push(*it);
cost[*it]=cost[i]+1;
}
Q.pop();
}
}
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int i, j;
scanf("%d %d %d",&N,&M,&Start);
while(M--) {
scanf("%d %d",&i,&j);
G[i].push_back(j);
}
bfs(Start);
for(i=1; i<=N; i++)
printf("%d ",cost[i]);
printf("\n");
return 0;
}