Pagini recente » Cod sursa (job #1997685) | Cod sursa (job #3217486) | Cod sursa (job #2801118) | Cod sursa (job #2332510) | Cod sursa (job #1329354)
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
#define DMAXN 100001
#define DMAXM 1000001
int N, M, S;
queue<int> Q;
struct Nod{
int dist = -1, parinte, desc;
vector<int> Adj;
} G[DMAXN];
int main(){
int i, x, y, lg;
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d\n", &N, &M, &S);
for (i = 0; i < M; i++){
scanf("%d %d\n", &x, &y);
G[x].Adj.push_back(y);
}
G[S].dist = 0;
Q.push(S);
while (!Q.empty()){
x = Q.front();
Q.pop();
lg = G[x].Adj.size();
for (i = 0; i < lg; i++){
y = G[x].Adj[i];
if (!G[y].desc){
G[y].desc = 1;
G[y].dist = G[x].dist + 1;
G[y].parinte = x;
Q.push(y);
}
}
}
for (i = 1; i <= N; i++) printf("%d ", G[i].dist);
return 0;
}