Pagini recente » Cod sursa (job #3160730) | Cod sursa (job #3197486) | Cod sursa (job #2508034) | Cod sursa (job #150489) | Cod sursa (job #1415697)
#include <cstdio>
#include <queue>
#define NMAX 100007
using namespace std;
queue < int > q;
vector < int > v[NMAX];
int Viz[NMAX];
int n, m, Start, a, b;
int main(){
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d %d %d", &n, &m, &Start);
q.push(Start);
for(int i = 1; i <= m; ++i){
scanf("%d %d", &a, &b);
v[a].push_back(b);
}
Viz[Start] = 1;
while(! q.empty()){
int Nod = q.front();
q.pop();
for(int i = 0; i < v[Nod].size(); ++i)
if(Viz[v[Nod][i]] == 0){
q.push(v[Nod][i]);
Viz[v[Nod][i]] = Viz[Nod] + 1;
}
}
for(int i = 1; i <= n; ++i)
printf("%d ", Viz[i] - 1);
return 0;
}