Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 08 декабря 2025 16:42

Икита сохраняет в памяти компьютера графы с комплектами одежды. Каждый граф содержит N предметов. Каждая вещь записана в таблицу и пронумерована. Кроме того, записаны номера вершины-родителя. Выведи название вещи, с которой Никита начал строить дерево вариантов. Ввод Вывод 5 Рубашка Джинсы Футболка Кроссовки Ботинки 1 0 1 2 2 Джинсы

Ответ нейросети

08 декабря 2025 16:42

Задача в примере: найти корень дерева вариантов и вывести его название. Ввод устроен так, что сначала дано число N, затем N названий вещей (по одной на строку), затем N чисел — номера родителей для соответствующих узлов. Число 0 означает, что узел является корнем (у него нет родителя). Нужно вывести название узла, у которого родитель равен 0 (то есть корень дерева).

Пошаговое решение

  1. Прочитай N.
  2. Считать массив имен вещей items[0..N-1] (по одной строке на название).
  3. Считать массив родительских узлов parents[0..N-1] (целые числа).
  4. Найди первый индекс i, для которого parents[i] == 0. Это корень дерева.
  5. Выведи имя items[i].

Замечания

  • Предполагается, что в вводе ровно один корневой узел (один элемент с parent = 0). Если их несколько, можно выбрать первый встретившийся.
  • Если корень не найден (нет 0 в списке), задача не имеет однозначного решения; можно вывести пустую строку или обработать отдельно.
  • При чтении имен старайся учитывать возможность пробелов внутри имени; в примере имена состоят из одного слова.

Пример решения на Python

  • Ввод рассчитывается так, что каждая строка содержит нужное значение.
  • Код ищет индекс корня по условию parent == 0 и выводит соответствующее имя.

Пример кода (Python): import sys

def main(): data = sys.stdin.read().splitlines() if not data: return N = int(data[0].strip()) names = [data[i+1].rstrip('\n') for i in range(N)] parents = [int(data[N+1+i].strip()) for i in range(N)]

root = None
for i, p in enumerate(parents):
    if p == 0:
        root = i
        break

if root is not None:
    print(names[root])

if name == "main": main()

Пример решения на C++

  • В C++ читаем N, затем значения имен с помощью getline (чтобы поддержать имена с пробелами), затем массив родителей.
  • Находим первый индекс с parent == 0 и выводим соответствующее имя.

Пример кода (C++): #include <bits/stdc++.h> using namespace std;

int main() { ios::sync_with_stdio(false); cin.tie(nullptr);

int N;
if (!(cin >> N)) return 0;
string tmp;
getline(cin, tmp); // удалить остаток новой строки после N

vector<string> names(N);
for (int i = 0; i < N; ++i) {
    getline(cin, names[i]);
    // в некоторых текстах бывает лишний '\r' (на Windows)
    if (!names[i].empty() && names[i].back() == '\r') names[i].pop_back();
}

vector<int> parents(N);
for (int i = 0; i < N; ++i) {
    cin >> parents[i];
}

int root = -1;
for (int i = 0; i < N; ++i) {
    if (parents[i] == 0) {
        root = i;
        break;
    }
}

if (root != -1) {
    cout << names[root];
}

return 0;

}

Пример проверки на данную задачу Ввод: 5 Рубашка Джинсы Футболка Кроссовки Ботинки 1 0 1 2 2

Алгоритм найдет индекс корня там, где parent == 0 → это второй элемент (Джинсы) и выведет: Джинсы.

Если нужно, могу адаптировать решение под другой язык или учесть альтернативный формат входных данных.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

икита сохраняет в памяти компьютера графы с комплектами одежды. Каждый граф содержит N предметов. Каждая вещь записана в таблицу и пронумерована. Кроме того, записаны номера вершины-родителя. Выведи название вещи, с которой Никита начал строить дерево вариантов. Ввод Вывод 5 Рубашка Джинсы Футболка Кроссовки Ботинки 1 0 1 2 2 Джинсы
Задача в примере: найти корень дерева вариантов и вывести его название. Ввод устроен так, что сначала дано число N, затем N названий вещей (по одной на строку), затем N чисел — номера родителей для соответствующих узлов. Число 0 означает, что узел является корнем (у него нет родителя). Нужно вывести название узла, у которого родитель равен 0 (то есть корень дерева). Пошаговое решение 1. Прочитай N. 2. Считать массив имен вещей items[0..N-1] (по одной строке на название). 3. Считать массив родительских узлов parents[0..N-1] (целые числа). 4. Найди первый индекс i, для которого parents[i] == 0. Это корень дерева. 5. Выведи имя items[i]. Замечания - Предполагается, что в вводе ровно один корневой узел (один элемент с parent = 0). Если их несколько, можно выбрать первый встретившийся. - Если корень не найден (нет 0 в списке), задача не имеет однозначного решения; можно вывести пустую строку или обработать отдельно. - При чтении имен старайся учитывать возможность пробелов внутри имени; в примере имена состоят из одного слова. Пример решения на Python - Ввод рассчитывается так, что каждая строка содержит нужное значение. - Код ищет индекс корня по условию parent == 0 и выводит соответствующее имя. Пример кода (Python): import sys def main(): data = sys.stdin.read().splitlines() if not data: return N = int(data[0].strip()) names = [data[i+1].rstrip('\n') for i in range(N)] parents = [int(data[N+1+i].strip()) for i in range(N)] root = None for i, p in enumerate(parents): if p == 0: root = i break if root is not None: print(names[root]) if __name__ == "__main__": main() Пример решения на C++ - В C++ читаем N, затем значения имен с помощью getline (чтобы поддержать имена с пробелами), затем массив родителей. - Находим первый индекс с parent == 0 и выводим соответствующее имя. Пример кода (C++): #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; if (!(cin >> N)) return 0; string tmp; getline(cin, tmp); // удалить остаток новой строки после N vector names(N); for (int i = 0; i < N; ++i) { getline(cin, names[i]); // в некоторых текстах бывает лишний '\r' (на Windows) if (!names[i].empty() && names[i].back() == '\r') names[i].pop_back(); } vector parents(N); for (int i = 0; i < N; ++i) { cin >> parents[i]; } int root = -1; for (int i = 0; i < N; ++i) { if (parents[i] == 0) { root = i; break; } } if (root != -1) { cout << names[root]; } return 0; } Пример проверки на данную задачу Ввод: 5 Рубашка Джинсы Футболка Кроссовки Ботинки 1 0 1 2 2 Алгоритм найдет индекс корня там, где parent == 0 → это второй элемент (Джинсы) и выведет: Джинсы. Если нужно, могу адаптировать решение под другой язык или учесть альтернативный формат входных данных.