棋盤覆蓋 最大流求解最大匹配

2021-10-24 01:15:36 字數 1272 閱讀 4087

乙個二分圖最大匹配的問題,依然是分成兩部分,數字座標和為奇數的為一部分,和為偶數的為另一部分。這兩部分各自內部沒有連線,可以作為二分圖。

二分圖最大匹配可以用最大流解決。可以引進乙個源點s

ss,從s

ss出發向二分圖的左部分連線(有向邊),把從左部分連向右部分的雙向邊換成從左連向右邊的單向邊,然後從二分圖的右部分的每個點出發,連向匯點t

tt,圖中所有邊的權值都是1,這樣乙個圖就建好了。

然後跑一邊~~沙(sand)盒(box)~~的dinic,最大流量就是答案。

#include

using

namespace std;

int n, t, s, t;

const

int n =

110, inf =

0x3f3f3f3f

;#define mem(a, b) memset(a, b, sizeof a)

int head[

101000

], nex[

101000

], to[

101000

], ed[

101000

], cnt;

bool can[n]

[n];

void

pre(

)void

add(

int a,

int b,

int c)

int dx=

;int dy=

;int d[

101000];

int cur[

101000];

bool

bfs()}

}return0;

}int

dinic

(int x,

int f)

r -= k;

ed[i]

-= k;

ed[i ^1]

+= k;

if(r ==0)

break;}

}return f - r;

}int

maxflow()

return flow;

}int

main()

for(

int i =

1; i <= n; i++)}

}else}}

}printf

("%d\n"

,maxflow()

);return0;

}

棋盤覆蓋 最大匹配

題目描述 給出一張nn n 100 的西洋棋棋盤,其中被刪除了一些點,問可以使用多少12的多公尺諾骨牌進行掩蓋。輸入格式 第一行為n,m 表示有m個刪除的格仔 第二行到m 1行為x,y,分別表示刪除格仔所在的位置 x為第x行 y為第y列 輸出格式 乙個數,即最大覆蓋格數 include define...

增廣路徑求解最大流

關於什麼是最大流。我說不清楚,而且也沒有別人的比喻生動。主要是我懶,不想畫圖 演算法的核心在於 找到增廣路徑,修改它,繼續找,直到沒有。while findaugmentpath 判斷是否有增廣路 maxflow maxflow delta 最大流增加 modifygraph 對增廣路進行修改 en...

模板 網路最大流 最大流

給出乙個網路圖,以及其源點和匯點,求出其網路最大流。in put role presentation inp utin put4 5 4 3 4 2 30 4 3 20 2 3 20 2 1 30 1 3 40ou tput role presentation out puto utpu t50最大...