codevs1227 方格取數2,費用流

2021-07-11 09:42:45 字數 794 閱讀 5492

傳送門

寫在前面:努力提公升寫網路流的能力

思路:建圖和蚯蚓很相似,不過這裡(i,j)拆出的兩個點x,y之間的邊有花費,實際點(i,j)與(i+1,j),(i,j)與(i,j+1)之間的連邊要流量inf費用為0,而且拆出的兩個點都要向(i+1,j)(i,j+1)的x點連邊,因為可能我們之前已經去過(i,j)的權值,並不能再獲取,所以要從x走向下乙個x(同樣y也可以走向下乙個x)

注意:無

#include

#define inf 0x7f

using namespace std

;int ans,n,k,s,t,tot=1,cnt,first[20000],dis[20000],up[20000];

bool vis[20000];

queueq;

struct edge

e[40000];

struct os

a[102][52];

void add(int x,int y,int z,int c)

bool spfa()

}return dis[t]<0x7ffff;}

void flow()

main()

add(cnt-2,t,inf,0);

add(t,cnt-2,0,0);

add(cnt-3,t,inf,0);

add(t,cnt-3,0,0);

while (k--&&spfa()) flow();

printf("%d",-ans);

}

codevs 1227 方格取數2

網路流 拆點 好像hdu上有類似的題。那時我還是用pascal寫的 算是裸題吧。然而我本不會費用流 看了下黃學長的 說下自己的理解 黃學長只貼了 把每乙個點拆成兩個點,乙個是流進的,乙個是流出的 然後建邊。這兩個點之間有這幾類邊 由流入點指向流出點,流量為1,費用為map i,j 由流出點指向流入點...

code vs 1227 方格取數 2

時間限制 1 s 空間限制 128000 kb 題目等級 大師 master 題解 檢視執行結果 給出乙個n n的矩陣,每一格有乙個非負整數aij,aij 1000 現在從 1,1 出發,可以往右或者往下走,最後到達 n,n 每達到一格,把該格仔的數取出來,該格仔的數就變成0,這樣一共走k次,現在要...

codevs1227 方格取數 2

題目鏈結 n n的方格,每個格仔中有乙個數,尋找從 1,1 走到 n,n 的k條路徑,使得取到的數的和最大。經典的費用流應用吧。額外新增源點s和匯點t,分別與 1,1 和 n,n 連邊。把棋盤中每個點拆成兩個,連兩條弧。其中一條容量為1,費用為該點的數字大小 另一條容量為inf,費用為0。這就表示乙...