Для начала, посчитаем для каждой вершины, в какой вершине с наименьшим расстоянием до магазина можно оказаться, проехав по не более чем одному тоннелю. Это наилучший из следующих вариантов: ответы для детей этой вершины, сама вершина, и все концы тоннелей, начинающихся в этой вершине.
Теперь пользуясь подсчитанным значением для проезда по одному тоннелю из вершины, найдем в какой вершине с наименьшим расстоянием до магазина можно оказаться, проехав из вершины i по не более чем 2j тоннелям. Пересчитывается следующим образом: d[i][2j] = d[d[i][2j - 1]][2j - 1].
Чтобы обработать запрос, надо разложить k из запроса по степеням двойки и совершить скачки такого размера.