網路流24題 家園

2022-03-29 09:59:19 字數 1158 閱讀 5038

[luogu 2754] 家園

傳送門分層圖上的最大流.按時間分層

建圖方法:

時間t不斷增加,每一天:

(1)從源點向每一天的地球連容量為inf的邊,流過該點相當於當天從地球出發

(2)從每一天的月亮向匯點連容量為inf的邊,流過該點相當於當天到達月球

(3)從上一天的每乙個中轉站向當天的對應節點連容量為inf的邊(留在中轉站等)

(4)針對每一艘飛船,獲取其上一天的位置,再獲取這一天的位置,在這兩個點之間連一條容量為飛船滿載人數的流 (人坐飛船走了一天)

求一次最大流,如果最大流超過k,則說明已經全部轉移,答案為t

如果t超過乙個很大的值maxans就無解,這裡設為500

實現細節上,注意編號的處理

s=0,t=(maxans+1)*n+3

第i天的節點編號為(i-1)*(n+2)+k

把地球k=1,月球k=2,n個中轉站k=3~n+2

#include#include#include#include#include#define maxc 105

#define maxn 10005

#define maxm 500005

#define inf 0x3f3f3f3f

using namespace std;

int n,m,k;

struct edgee[maxm<<1];

int sz=1;

int head[maxn];

void add_edge(int u,int v,int w)

int deep[maxn];

bool bfs(int s,int t)}}

return 0;

}int dfs(int x,int t,int minf)

}return minf-rest;

}int dinic(int s,int t)

return maxflow;

}int man[maxc];

int scnt[maxc];

int stop[maxc][maxc];

int main()

if(ans==maxans) printf("0");

else printf("%d",ans);

}

網路流24題 CTSC1999 家園

地球和月球中間有 n n 個太空站,有 m role presentation m m艘太空船,k k 個人要從地球前往月球。已知每個太空站可以容納無限多的人,每艘太空船的承載人數為 hi role presentation hih i,以及它們的行駛路線 經過的每乙個太空站編號 任意兩個太空站之間...

網路流24題 CTSC1999 家園

對於這種乙個點 表面意義上的乙個點,比如說乙個位置 對應多種情況的 比如說隨著時間的推移有著不同的狀態,而且這種狀態 2 我們考慮在類似於分層圖上面跑網路流。比如說這道題,週期的暴力處理顯然是一件很棘手的事情,我們看到資料範圍這麼小,就可以想一想把每個時間點的圖都建出來 每個點對應哪乙個空間站在第幾...

CTSC1999 網路流24題 家園

題目 洛谷p2754。題目大意 有 n 個空間站,m 個飛船,每個飛船有各自的停靠站點,並且從第乙個停靠站點開始,不斷迴圈。每個飛船有不同的容量 1為月球,0為地球 每個飛船初始停在第乙個停靠站上,每過1s就會到下乙個停靠站。在空間站上的人可以選擇上飛船,也可以選擇不上飛船。現在有 k 個人要從地球...