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

Автор xuanquang1999, история, 8 лет назад, По-английски

I'm trying to solve 720B — Cactusophobia from Russian Code Cup 2016 Final. I read the editorial and understood the flow solution for this problem. So I find some implementation for this problem. I read dreamoon_love_AA's solution (20732895), which used Dinic flow finding algorithm and run in 373ms. But, since Dinic algorithm run in O(n2m), and the graph can have up to 30000 vertices and edges, how could this run in time? Can someone enlighten me about this? Thanks in advance.

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

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

Sum of capacity of all edges is O(n). You can imagine an edge with capacity x as x edges with capacity 1. It'll be a unit graph, hence Dinic's algorithm will run in .

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

Dinic is min(fE, V^2E), and f <= V, so it is O(VE). (As above comment mentioned, tighter bounds are possible)