Решение Г. Сакурако и Чефира [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Решение Г. Сакурако и Чефира [закрыто]

Сообщение Anonymous »

Задача: Г. Сакурако и Чефир
Задача: для каждого узла в дереве найти самый дальний узел, до которого можно добраться за некоторое количество подъемов
Вот мой код на C++:

Код: Выделить всё

#include
#include

using namespace std;

void down_to_leaves(int curr,
vector& list,
vector& dist,
vector& parent,
vector& visited) {
visited[curr] = true;

for (int child : list[curr]) {
if (visited[child]) {
continue;
}

parent[child] = curr;

down_to_leaves(child, list, dist, parent, visited);
dist[curr] = max(dist[child], dist[curr]);
}

dist[curr] += 1; // max(child_1, child_2, ...) + 1
}

int main() {
int t;
cin >> t;

for (int _ = 0; _ < t; _++) {
int n;
cin >> n;

vector list(n + 1);
vector parent(n + 1), dist(n + 1, -1);
vector visited(n + 1);

for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;

list[u].push_back(v);
list[v].push_back(u);
}

down_to_leaves(1, list, dist, parent, visited);

int q; cin >> q;

for (int i = 0; i < q; i++) {
int vertex, k, last = -1, ans = 0;
cin >> vertex >> k;

// climb up
for (int j = 0; j 

Подробнее здесь: [url]https://stackoverflow.com/questions/79176508/solution-of-g-sakurako-and-chefir[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»