Pagini recente » Cod sursa (job #3229171) | Atasamentele paginii Profil mihai_boss | Cod sursa (job #3256605) | Cod sursa (job #3270161) | Cod sursa (job #1478178)
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main() {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int n, m, s;
scanf("%i%i%i", &n, &m, &s);
s--;
int *distance = new int[n];
bool *visited = new bool[n];
vector<int>* vecini = new vector<int>[n];
for (int i = 0; i < m; i++) {
int x, y;
scanf("%i%i", &x, &y);
x--;
y--;
vecini[x].push_back(y);
}
queue<int> q;
q.push(s);
visited[s] = true;
distance[s] = 0;
while (!q.empty()) {
int current = q.front();
q.pop();
for (int i = 0; i < vecini[current].size(); i++) {
int vecin = vecini[current][i];
if (!visited[vecin]) {
visited[vecin] = true;
distance[vecin] = distance[current] + 1;
q.push(vecin);
}
}
}
for (int i = 0; i < n; i++) {
printf("%i ", distance[i]);
}
fclose(stdin);
fclose(stdout);
return 0;
}