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

Автор Impostor_Syndrome, история, 3 года назад, По-английски

Each edge — 'i' in the graph has two values associated with it — v1[i] and v2[i].
Let M be one of the possible Spanning Tree of the graph. Then define A = max(v1[i]'s for all the edges in ST) and B = max(v2[i]'s for all the edges in the ST).

Then for all the possible Spanning Trees of this graph find the minimum value of A + B.

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

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

Is there a link where I can submit this problem?

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

iirc link cut tree should work. Check the comments of the editorial of 1386C - Joker for reference.

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

    If the expected time complexity is O(VElog(V)+Elog(E))? Then is there any easier method possible?

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

      Use two pointers to find, for each $$$A$$$, the minimum possible $$$B$$$. Now the problem becomes:

      • Support these queries: "add an edge" (to increase $$$A$$$), "remove an edge" (to decrease $$$B$$$), "check if the graph is connected".

      I don't find any "easy" way to answer queries of the third type in $$$O(V \log V)$$$ (a normal DFS works in $$$O(V+E)$$$). Link cut tree is much faster, but it looks overkill.