You can use a stream algorithm similar to what you offer with Hopcroft-Karp, if you add another level that distinguishes time intervals with some kind of stream expander.
Thus, you will have a source connected to people, people connected to time intervals, time intervals associated with time breakdowns, and failures connected to the sink.
To describe the breakdown, let's say you have time intervals that start at 10:00, 10:15, 10:30 and 10:45. Temporary disruptions will be 15 minutes. If all meetings last an hour, then the time interval 10:00 will be connected to the breakdown 10: 00-10: 15, as well as 10: 15-10: 30, 10: 30-10: 45 and 10:45 -11: 00.
When connecting time intervals and failures, there must be some modified logic. This is due to the fact that they would have to change the flow rate between the input of time intervals and connections with breakdowns. This is due to the fact that whenever one person receives a binding to a time interval (time interval in a stream = 1), there are several flows in the breakdown (output time 4 = for the example above).
I have not tried one disclaimer. If you say please how well this works.
wckd
source share