Pagini recente » Cod sursa (job #1845391) | Cod sursa (job #1142032) | Cod sursa (job #1218081) | Cod sursa (job #3153014) | Cod sursa (job #3334936)
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
const int NMAX = 100000; // nr maxim din restrictii
vector<int> adj[NMAX + 1]; // lista de adiacenta
int N;
int M;
int S;
vector<int> dist(N + 1, -1);
void readInput() {
cin >> N >> M >> S;
for (int i = 1; i <= M; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v); // orientat
// adj[v].push_back(u); // neorientat
}
// alte inputuri din porblema
}
// alte functii pentru rezolvarea problemei
void bfs(int start) {
vector<bool> visited(N + 1, false);
vector<int> tata(N + 1, 0);
queue<int> q;
q.push(start);
visited[start] = true;
dist[start] = 0;
while (q.size() > 0) {
int nod = q.front();
q.pop();
for (auto j : adj[nod]) {
if (visited[j] == false) {
q.push(j);
visited[j] = true;
tata[j] = nod;
dist[j] = dist[nod] + 1;
}
}
}
}
void output() {
// afisare rezultate
for (int i = 1; i <= N; i++) {
cout << dist[i] << " ";
}
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
readInput();
bfs(S);
output();
return 0;
}