Блог пользователя BlackStar

Автор BlackStar, 11 лет назад, По-русски

Всем привет! Собственно вот задачка, подкиньте, пожалуйста, идею.

  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится -16 Проголосовать: не нравится
  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится -6 Проголосовать: не нравится

    Спасибо. Не изучал еще такого алгоритма.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Omelianenko прав.

      LCA ищет наименьшего общего предка двух вершин. Топологическа сортировка для его постоения нужна (если это не Тарьян). В данной задаче ответ на запрос 1, только если вершины лежат в одной компоненте связности и LCA(a,b)=a, во всех других случаях ответ 0.

      За чушь собачью написаную мной в комменте ниже дико извиняюсь это была попытка решить задачу не думая.

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

надо воспользоваться такой штукой "время входа-выхода в dfs". так как нам дан связный граф без циклов (деревце), то истинность данного условия (tin[u] < tin[v] && tout[u] > tout[v]) равносильна тому, что u предок v. вы слышали что-нибудь об этом, знаете, как считать tin[] и tout[]?

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Да, слышал. Спасибо, сейчас подумаю над вашей мыслью.

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Простой способ. Топологическая сортировка.

Запускаем dfs из корней деревьев. Запоминаем время выхода из каждой вершины. У кого время больше, тот и предок. Не забудьте покрасить вершины номерами компоненты связности в которых они лежат, а то могут сравниваться вершины с разных компонент, очевидно, что для них ответ 0.

  • »
    »
    11 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Может я неверно Вас понял, но у в тесте, который в сэмпле по этому алгоритму будет неверный ответ для 6 5. Т.к из 5-ти мы можем выйти раньше, чем 6-ти.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    очевидно, что это не работает.

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Задача с qbit.org.ua Авторское решение предполагает топологическую сортировку графа.