PKU 3281 Dining 網路流 抄模板

2022-08-05 00:54:13 字數 1407 閱讀 5318

題意:

思路:用 s -> 食物 -> 牛 -> 牛 -> 飲料 -> t 為路徑,建圖。然後跑最大流。

p.ps.: 抄的書上的思路和dfs增廣路的模板,當做學習網路流的第一步吧 :)

**:

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

const

int maxv = 500;8

const

int inf = 0x7fffffff;9

10struct

edge ;

1516 vectorg[maxv]; //

圖的鄰接表表示

17bool used[maxv]; //

dfs中用到的訪問標記

1819

//向圖中增加一條從s到t容量為cap的邊

20void addedge(int

from, int to, int

cap) );

22 g[to].push_back((edge));23}

2425

//dfs找增廣路

26int dfs(int v, int t, int

f) 39}40

}41return0;

42}4344

//求解從s到t的最大流

45int maxflow(int s, int

t) 53

return

flow;54}

5556

const

int maxn = 105;57

58int

n, f, d;

59bool

likef[maxn][maxn];

60bool

liked[maxn][maxn];

6162

void

input()

73for (int j = 0; j < d; j++) 77}

78}7980

void

solve()

9192

//在飲料和t之間連邊

93for (int i = 0; i < d; i++)

9697

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

105//

牛到飲料

106for (int j = 0; j < d; j++) if

(liked[i][j])

109}

110 printf("

%d\n

", maxflow(s, t));

111}

112113

intmain()

pku3281

Poj 3281 Dining 拆點網路流

題意和思路都和我部落格的這篇文章幾乎一樣 這裡有一組測試資料 include include include using namespace std const int inf 0x6fffffff 權值上限 const int maxpt 450 頂點數上限 const int maxeg 450...

poj 3281Dining(網路流 拆點)

題目大意 john養了n只奶牛,他為奶牛準備了f個食物和d個飲料,但是每只奶牛只對其中的一些飲料和食物感興趣,現在請制定一些方案,使得盡可能多的奶牛吃到自己感興趣的食物和飲料,求出最多滿足奶牛的個數。思路 拆點建圖跑dinic演算法最大流,每只奶牛拆成兩個點,例如第ni個奶牛拆為ni 和 ni ni...

poj3281 dining 經典最大流建模方法

題意 有f中食物和d種飲料,每頭牛只能享用一種食物和飲料,每個食物跟飲料也只能被一頭牛享用。現在有n頭牛,每頭牛都有自己喜歡的食物種類列表和飲料列表,問最多能使幾頭牛同時享用到自己喜歡的食物和飲料。f,d,n都是一百以內的。思路 就不說一開始的想法了,是最近學習的最大流的建模裡面的新的方法。之前做過...