有向圖,每天只能乘一班飛機。求從 1 到 n 輸送 T 個人最少天數。關鍵:每天每城市只能停留一次 → 拆點按天分層。
(d-1)*N + i(u,v) → 第 d 天 u 連第 d+1 天 v,容量 1n + T 足夠(最壞每天輸送 1 人)節點數 O((n+T)·n),邊數 O((n+T)·m)。Dinic 實際極快,配合動態增邊單調性,總時間可控。
for (int day = 1; ; ++day) {
add_day_edges(day); // 添加飛機邊+停留邊
while (bfs())
while (flow = dfs(S, INF)) total += flow;
if (total >= T) { printf("%d", day); break; }
}