網路流24題 23 洛谷P3356 火星探險問題

2021-09-25 20:54:11 字數 1303 閱讀 5240

題意:q∗p

q*pq∗

p的網格,有障礙/平坦地面/岩石標本,求從左上角到右下角最多運送車輛的情況下,運送的石子數最多,輸出車輛走的路徑。

思路:35*35的圖很小,拆點建圖,有石子的一條邊容量為1,費用-1,另一條容量inf,費用0.

最後的輸出答案跑n遍dfs,每次沿著flow>0的邊走到終點,並把路徑上所有的邊flow-1.

#include

using

namespace std;

const

int maxn=

2000*2

+100

;const

int inf=

0x3f3f3f3f

;typedef

long

long ll;

struct edge

;struct mcmf

addedge

(s,0

,n,0);

addedge

(s-1

,t,inf,0)

;for

(int i=

0;i)for

(int j=

0;jvoid

addedge

(int from,

int to,

int cap,

int cost));

edges.

push_back

((edge));

m=edges.

size()

; g[from]

.push_back

(m-2);

g[to]

.push_back

(m-1);

}bool

bellmanford

(ll& flow,ll& cost)}}

}if(d[t]==(

1ll<<50)

)return

false

; a[t]=1

; flow+

=a[t]

; cost+

=a[t]

*d[t]

;int u=t;

while

(u!=s)

return

true;}

ll mincost()

void

dfs(

int node,

int u)}}

void

print()

}ans;

intmain()

洛谷P3356 火星探險問題 費用流

火星探險隊的登陸艙將在火星表面著陸,登陸艙內有多部障礙物探測車。登陸艙著陸後,探測車將離開登陸艙向先期到達的傳送器方向移動。探測車在移動中還必須採集岩石標本。每一塊岩石標本由最先遇到它的探測車完成採集。每塊岩石標本只能被採集一次。岩石標本被採集後,其他探測車可以從原來岩石標本所在處通過。探測車不能通...

洛谷 P3356 火星探險問題

給出一張地圖,上面有一些石塊或障礙,現在有一些運載車從左上角出發,要去右下角,只能向右或向下走,每個石塊只能收集一次,輸出收集到最多石塊的路徑.多個運載車,不難想到是網路流,但難點在於每個石塊最多收集一次,而且要收集最多石塊.可以用費用流來做,每個點拆成兩個入點向出點連一條流量為inf,費用為0的邊...

洛谷 網路流24題 運輸問題

初見安 這裡是傳送門 洛谷p4015 運輸問題 因為貨物的初始量和變化後的量都是確定的,所以這個是最大 最小費用流。其實直接按題目意思建圖就可以了。從s連向每個a倉庫表示分配貨物,從每個b連向t表示限制b商店需要的貨物數量。a和b之間就按照題意連費用流的邊即可。對於這個題的兩個文我們當然可以寫兩個s...