description
由於人類對自然資源的消耗,人們意識到大約在$2300$年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,$2177$年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有$n$個太空站位於地球與月球之間,且有$m$艘公共運輸太空船在其間來回穿梭。每個太空站可容納無限多的人,而每艘太空船$i$只可容納$h_i$個人。每艘太空船將周期性地停靠一系列的太空站,
例如:$(1,3,4)$表示該太空船將周期性地停靠太空站$134134134...$。每一艘太空船從乙個太空站駛往任一太空站耗時均為$1$。人們只能在太空船停靠太空站(或月球、地球)時上、下船。
初始時所有人全在地球上,太空船全在初始站。求讓所有人全部轉移到月球上所需最短用時。
input
第$1$行有$3$個正整數$n$(太空站個數),$m$(太空船個數)和$k$(需要運送的地球上的人的個數)。
接下來的$m$行給出太空船的資訊。第$i+1$行說明太空船$p_i$。第$1$個數表示$p_i$可容納的人數$h_i$;第$2$個數表示$p_i$乙個週期停靠的太空站個數$r_i$;隨後$r_i$個數是停靠的太空站的編號:$s_,s_,...,s_$,地球用$0$表示,月球用$-1$表示。時刻$0$時,所有太空船都在初始站,然後開始執行。在時刻$1,2,3...$等正點時刻各艘太空船停靠相應的太空站。
人只有在$0,1,2...$等正點時刻才能上下太空船。
output
一行乙個整數,表示將全部人員安全轉移所需最短用時。如果問題無解,則輸出$0$。
sample input
2 2 1
1 3 0 1 2
1 3 1 2 –1
sample output
hint
$1\;\leq\;m\;\leq\;13,1\;\leq\;n\;\leq\;20,1\;\leq\;k\;\leq\;50,1\;\leq\;r\;\leq\;n+2$.
solution
遍歷判斷從地球到月球是否存在一條路徑,若不存在,則無解.
將每個點按時間拆成$d$個點,$x_$表示第$i$個太空站第$d$天的情況.
順序列舉答案$d$.
從$s$到$x_$連一條容量為$+\infty$的有向邊,
從$x_$到$t$連一條容量為$+\infty$的有向邊,
從$x_$到$x_$連一條容量為$+\infty$的有向邊,
若存在某艘太空船$k$,第$d-1$天在$i$,第$d$天在$j$,從$x_$到$x_$連一條容量為$h_k$的有向邊.
求最大流,若流量$\;\leq\;k$,則$d$為答案.
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#define n 25
#define k 1105
#define m 77005
using
namespace
std;
struct
graphe[m],e1[k];
inta[n][n],h[n],r[n],g[k],g1[n],dep[k],n,m,k,s,t,fl,tot,cnt;
bool
v[n];
queue
q;inline
void added(int x,int
y)inline
void addedge(int x,int y,int
f)inline
void adde(int x,int y,int
f) inline
int f(int
d)inline
bool bfs(int
u) }
return
dep[t];
}inline
int dfs(int u,int
f)
return
ret;
}inline
intdinic()
}inline
bool chk(int
u) }
return
false;}
inline
void
aireen()
for(int j=1;jj)
added(a[i][j-1
],a[i][j]);
if(r[i]>1) added(a[i][r[i]-1],a[i][0
]); }
if(!chk(n+1
)) s=0;t=k-1;tot=n+2;cnt=1
; adde(
0,n+1,m);adde(n+2
,t,m);
for(int d=1;;++d)
}
}int
main()
網路流24題 星際轉移問題
這個問題的難點在於如何表示時間的流逝很容易 想到源點 是地球,然後中間 一串的空 間站,最 後連向匯 點月 球很容易想到源點是地球,然後中間一串的空間站,最後連向匯點月球 很容易想到源 點是地球 然後中 間一串的 空間站,最後連向 匯點月球空間 站間各自 連邊,流 量是飛船 的容 量空間站間各自連邊...
網路流 24 題 星際轉移
題目描述 由於人類對自然資源的消耗,人們意識到大約在 2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有 n n n 個太空站位於地球與月球之間,且有 m m...
網路流24題之星際轉移問題
一開始以為跑費用流,後來看了題解才知道可以按天建圖。1.從源點向每一天的地球鏈結一條inf 2.從每一天的月亮向匯點鏈結一條inf 4.針對每一艘飛船,獲取其上一天的位置,再獲取這一天的位置,在這兩個點之間連一條容量為飛船滿載人數的流 每次新加一天然後跑到最大流超過k即可 至於無解的情況只要當ans...