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

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

Прошу помочь с идеей решения этой задачи. Я строю сеть. Вершинами являются маги, моменты времени, сток и исток. Нахожу максимальный поток  в сети, что дает мне ответ "Yes" или "No". Но не могу восстановить ответ, т.к. матрица потока не дает ответ.

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

15 лет назад, скрыть # |
 
Проголосовать: нравится -9 Проголосовать: не нравится
задача решается без потока, жадно
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Я пробовал жадный алгоритм придумать, но он не проходит вот такой тест:
5 2
0 2
0 3
0 5
3 2
3 2

Исправил)))
15 лет назад, скрыть # |
 
Проголосовать: нравится -20 Проголосовать: не нравится
Не очень понятно. Дело в том, что ответ задачи вы интерпритируете как поток, но при этом из потока не можете восстановить ответ задачи?

P. S.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Я решал так:

Граф состоит из двух долей. Левая доля - маги (N штук), правая доля - время. От истока ко всем магам идут ребра пропускной способностью 2 (каждого мага надо побрить 2 раза). От каждого мага (вершины левой доли) к вершинам, обозначающим время, идут ребра пропускной способностью 1. Причем только к тем вершинам из правой доли, в которые маг может быть побрит (по входным данным). От каждой вершины правой доли в сток идут ребра пропускной способностью k (в каждый момент времени можно побрить не более k магов).

Теперь в таком графе надо найти поток. Если он будет равен 2*N (каждого мага побрили по 2 раза), то ответ "Yes" , иначе "No". Если ответ положительный, то моменты времени восстановить не сложно. Используемые ребра в матрице смежности будут равны нулю.

Цикл по магам (i)
   Цикл по возможному времени для мага (j)
      Если в матрице смежности на позиции [i][j] находится 0. То именно в этот момент мы побрили   этого мага.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится -23 Проголосовать: не нравится
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Не совсем понял момент, когда вы восстанавливаете ответ...
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +5 Проголосовать: не нравится
      Начальная матрица смежности. (1, 2, 3 - маги. 7 8 9 - моменты времени (пусть это будет 1,2 и 3 минуты соответственно). k = 2

         S 1 2 3 7 8 9 T
      S 0 2 2 2 0 0 0 0
      1 0 0 0 0 1 1 1 0
      2 0 0 0 0 1 1 1 0
      3 0 0 0 0 1 1 1 0
      7 0 0 0 0 0 0 0 2
      8 0 0 0 0 0 0 0 2
      9 0 0 0 0 0 0 0 2
      T 0 0 0 0 0 0 0 0

      Найден путь S - 1 - 7 - T  ([S][1]; [1][7]; [7][T] получают "- 1"; [T][7]; [7][1]; [1][S] "+1")

         S 1 2 3 7 8 9 T
      S 0 1 2 2 0 0 0 0
      1 1 0 0 0 0 1 1 0
      2 0 0 0 0 1 1 1 0
      3 0 0 0 0 1 1 1 0
      7 0 1 0 0 0 0 0 1
      8 0 0 0 0 0 0 0 2
      9 0 0 0 0 0 0 0 2
      T 0 0 0 0 1 0 0 0

      И т.д.
      В результате часть результирующей матрицы будет равна
        7 8 9
      1 0 0 1
      2 0 1 0
      3 1 0 0
      Означает, что первый маг побрит в моменты 7,8. Второй в - 7,9. Третий в - 8,9. (там где 0 в матрице)
      • 15 лет назад, скрыть # ^ |
        ← Rev. 3  
        Проголосовать: нравится -7 Проголосовать: не нравится

        授人以鱼不如授人以渔


        Судя по вопросу, участник плохо понимает, что такое поток, что такое остаточная сеть и как все это работает вообще. Лучше, дайте ему разобраться.