網路流24題

2022-03-16 18:34:43 字數 2501 閱讀 2359

按馬的軌跡連邊,最後是一張二分圖,求最大匹配。可以跑匈牙利直接求出來,也可以連源點和匯點跑dinic。

我是學二分圖的時候寫的,當時寫的是匈牙利。我當時碼風好奇怪

1 #include 2

#define id(x, y) (x - 1) * n + y

3#define new(p) p = &tmp[++ecnt]45

struct edge tmp[1000005], *head[40005];6

7int vis[40005], match[40005], ecnt = -1

, n, m, tim, ans, tot;

8int dx = , dy=;

9bool ban[205][205

];10

11 inline void add(int f, int to)

1213

bool dfs(int

x) 21}22

}23return0;

24}2526

signed main()

32for (int i = 1; i <= n; i++) 40}

41}42for (int i = 1; i <= n; i++) 49}

50}51 printf("

%d\n

", tot -ans);

52return0;

53 }

匈牙利按給定關係建圖,仍是二分圖,求最大匹配。

依舊寫的是匈牙利。我當時沒看見spj,寫了一堆奇怪的東西。。。。

1 #include 2

using

namespace

std;

3#define n 100545

namespace

gekoo e[n];

910 pairp[n];

1112

intm, n, head[n], ecnt, match[n], ans, pcnt;

13bool

vis[n];

1415

void addedge(int f, int

to)

2021

bool dfs(int

u) 30}31

}32return0;

33}3435

void

qaq()

43for (int i = 1; i <= m; i++)

47if (ans == 0

) else56}

57 sort(p + 1, p + 1 +pcnt);

58for (int i = 1; i <= pcnt; i++)

61return;62

}63}64

}6566signed main()

又是匈牙利

把圖按格仔奇偶性黑白染色,源點連黑色,白色連匯點,黑色向相鄰白點連,求出最小割,用數字和減去。

建出來的仍是二分圖,這個過程其實就是在求二分圖的最大獨立集。

1 #include 2

#define id(x, y) ((x - 1) * m + y) 34

const

int n = 500005, inf = 0x3f3f3f3f;5

const

int dx[4] = , dy[4] = ;

6int n, m, sum, ecnt = 1

, s, t;

7int matrix[105][105

], head[n], dep[n];

8struct

edge e[n << 5

];11

12 inline void addedge(int f, int to, int

val) , head[f] =ecnt;

14 e[++ecnt] = , head[to] =ecnt;15}

1617

bool

bfs() 31}

32}33return

false;34

}3536int dfs(int x, int

flow)

43 las -= q, e[i].val -= q, e[i^1].val +=q;44}

45}46return flow -las;47}

4849

intdinic()

5455

signed main() 62}

63 s = n * m + 1, t = s + 1;64

for (int i = 1; i <= n; i++)

73 } else76}

77}78 printf("

%d\n

", sum -dinic());

79return0;

80 }

這次是dinic了

網路流 24 題

1 搭配飛行員 題意 n個飛行員,其中有m名飛行員是正駕駛員。飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。思路 裸二分圖匹配 最大流 題 版本一 網路流做法 引入源點s 0以及匯點t n...

網路流24題

學會網路流演算法後,我們要做的就是把問題轉化成網路流問題。求二分圖最大匹配。網路流建模要找到問題的關鍵特點,用連邊,流量 以及費用 把原問題轉化成網路流問題,包括最大流,最小割,費用流。二分圖最大匹配的特點是每個點最多屬於一條匹配邊。這相當於是說,每個點只能流過一次。要求的是最大匹配,可以得出建模為...

網路流24題

經典問題,做了一部分 太水的就不記錄了 最大流是對於一種完整的匹配的處理,一條路乙個貢獻。要求匹配盡可能多。費用流是對於乙個路徑的最值的處理,每條邊自己的費用。再匹配最多前提下,匹配的費用達到最值。難點就是對於條件狀態的設計 網路流24題 餐巾計畫問題 費用流建模 考慮每天一定有ri條髒毛巾,所以髒...