★★★☆ 輸入檔案:home.in
輸出檔案:home.out
簡單對比
時間限制:1 s 記憶體限制:128 mb
由於人類對自然資源的消耗,人們意識到大約在2300 年之後,地球就不能再居住了。
於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未
知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有n個太空站
位於地球與月球之間,且有m 艘公共運輸太空船在其間來回穿梭。每個太空站可容納無限
多的人,而每艘太空船i 只可容納h[i]個人。每艘太空船將周期性地停靠一系列的太空站,
例如:(1,3,4)表示該太空船將周期性地停靠太空站134134134…。每一艘太空船從乙個太
空站駛往任一太空站耗時均為1。人們只能在太空船停靠太空站(或月球、地球)時上、下船。
初始時所有人全在地球上,太空船全在初始站。試設計乙個演算法,找出讓所有人盡快地全部
轉移到月球上的運輸方案。對於給定的太空船的資訊,找到讓所有人盡快地全部轉移到月球上的運輸方案。
«資料輸入:
由檔案home.in提供輸入資料。檔案第1行有3 個正整數n(太空站個數),m(太空船
個數)和k(需要運送的地球上的人的個數)。其中 1<=m<=20, 1<=n<=13, 1<=k<=50。
接下來的m行給出太空船的資訊。第i+1 行說明太空船pi。第1 個數表示pi 可容納的
人數hpi;第2 個數表示pi 乙個週期停靠的太空站個數r,1<=r<=n+2;隨後r 個數是停靠
的太空站的編號(si1,si2,…,sir),地球用0 表示,月球用-1 表示。時刻0 時,所有太空船都
在初始站,然後開始執行。在時刻1,2,3…等正點時刻各艘太空船停靠相應的太空站。人
只有在0,1,2…等正點時刻才能上下太空船。程式執行結束時,將全部人員安全轉移所需的時間輸出到檔案home.out中。如果問題
無解,則輸出0。home.in
2 2 1
1 3 0 1 2
1 3 1 2 -1
home.out
5
#include#include#include
#define setfile(name) freopen(#name".in","r",stdin);freopen(#name".out","w",stdout);
using
namespace
std;
const
int n=31,d=51,m=1e6+5
;const
int inf=2e9;
struct edgee[m];int tot=1,head[n*d];
int n,m,k,s,t,ans,dis[n*d],q[n*d],a[n][d],h[n];
void add(int x,int y,int
z)bool
bfs()}}
return0;
}int dfs(int x,int
f) }
if(!used) dis[x]=-1
;
return
used;
}inline
void
dinic()
void
init()
}}void
doit()
for(int i=2;i<=n+3;i++) add((day-1)*(n+2)+i,day*(n+2)+i,inf);
dinic();
if(ans>=k)
}printf("0
");}int
main()
CTSC1999 網路流24題 家園
題目 洛谷p2754。題目大意 有 n 個空間站,m 個飛船,每個飛船有各自的停靠站點,並且從第乙個停靠站點開始,不斷迴圈。每個飛船有不同的容量 1為月球,0為地球 每個飛船初始停在第乙個停靠站上,每過1s就會到下乙個停靠站。在空間站上的人可以選擇上飛船,也可以選擇不上飛船。現在有 k 個人要從地球...
CTSC1999 網路流24題 星際轉移
由於人類對自然資源的消耗,人們意識到大約在2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有n個太空站 位於地球與月球之間,且有m 艘公共運輸太空船在其間來回...
CTSC1999 網路流24題 補丁VS錯誤
題目 洛谷p2761 vijos p1019 codevs1239 codevs2218。題目大意 有n個錯誤,m個不同的補丁。對於乙個補丁,有兩個不同的字串描述。具體如下 如果當前錯誤包含第乙個字串中 的所有錯誤,且不包含第乙個字串中 的所有錯誤,則可以用這個補丁。使用這個補丁將修復第二個字串中 ...