hdu4971 流 最大權閉包

2021-06-23 09:04:41 字數 2719 閱讀 4698

題意:

給了一些任務,然後給了一些完成某些任務的限制,然後又給了限制之間的拓撲關係,最後問你最大收益。

思路:很直白,就是流的乙個應用,最大權閉包,沒涉及到什麼想法的地方,建圖也不坑,直接說建圖吧,

s - 所有任務  流量是 任務價值

所有限制 - t  流量是 限制代價

a -> b 流量 inf a限制的拓撲關係在b的後面

最後答案是 所有任務的價值 - maxflow

#include#include#include#define n_node 100

#define n_edge 8000

#define inf 1000000000

using namespacestd;

typedef struct

star;

typedef struct

dep;star e[n_edge];dep xin,tou;

intlist[n_node] ,listt[n_node] ,tot;

intdeep[n_node];

voidadd(

inta,

intb,

intc)

boolbfs_deep(

ints,

intt,

intn)

}for(

inti=0;i<=n;i++)listt[i] =list[i];

returndeep[t] != -1;

}intminn(

intx,

inty)

intdfs_flow(

ints,

intt,

intflow)

if(!nowflow)deep[s] =0;

returnnowflow;

}intdinic(

ints,

intt,

intn)

returnans;

}int

main

()for

(i=1;i<=m;i++)

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

}for(i=1;i<=m;i++)

for(j=1;j<=m;j++)

printf("case #%d: ",cas++);printf("%d\n",sum_z-dinic(s,t,t));

}return0;

}

hdu 3879 最大權閉包)

選擇了一條邊就會選擇兩個點,邊的花費為正,點的花費為負,把邊看成點,這個點向兩個端點連一條邊,表示選擇這條邊就會選擇這兩個點 然後題目就相當於最大權閉合圖的模型了 最大權閉包模型中vs與正收益的點連邊,負收益的點與vt連邊,容量取絕對值,然後點與點之間連容量為inf的邊 題意 有n個點,m個選擇,建...

HDU 5045 費用流求最大權

題意 有n個人和m到題目,每個人做對的概率以矩陣形式給出,問如何分配才可以使做對的概率最大,有乙個限制條件是做到目前為止每兩個人的做題數量差距不能超過1,也就是前n道題目,必須一人做乙個 思路 網上都是dp多一點,用網路流也可以,不過麻煩很多,可是本弱是一點dp都不會的選手啊,只能用網路流了,對於那...

HDU 3061 Battle 最大權閉合

題目大意 由於小白同學近期習武十分刻苦,很快被晉公升為天策軍的統帥。而他上任的第一天,就面對了一場極其困難的戰鬥 據偵查兵回報,前方共有n座城池,考慮到地勢原因,最終得到乙個結論 攻占某些城池之前必須攻占另外一些城池。事實上,可以把地圖看做是一張拓撲圖,而攻占某個城池,就意味著必須先攻占它的所有前驅...