poj 1459 最大流 Dinic模板題

2022-08-12 13:51:11 字數 1154 閱讀 2995

題意:

給幾個發電站,給幾個消耗站,再給幾個**點。

發電站只發電,消耗站只消耗電,**點只是**電,再給各個傳送線的傳電能力。

問你消耗站能獲得的最多電是多少。

思路:這題建圖是比較顯然的,超源點和發電戰之間連邊,容量是發電量,消耗站和超匯點之間連邊,容量是消耗量,然後輸電線本來就是邊,這樣就建好圖了,剩下的就是套最大流的模板了。

此題n<=100,m<=n^2,邊比較多,所以採用dinic演算法,時間複雜度o(mn^2)。如果用ek演算法,並且輸入用cin的話可能會超時,這題用scanf會節省很多時間。

#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

const int n=100+9;

struct edge

;vectoredges;

vectorg[n];

int d[n]; //從起點到i點的距離

int cur[n]; //當前弧下標

bool vis[n];

int s,t;

bool bfs()}}

return vis[t];

}int dfs(int x,int a)

}return flow;

}int maxflow()

return flow;

}void addedge(int from,int to,int cap)

); edges.push_back((edge));

int m=edges.size();

g[from].push_back(m-2);

g[to].push_back(m-1);

}int main()

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

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

printf("%d\n", maxflow());

} return 0;

}

POJ 1459 最大流 第二題

也是網路流的基礎,只是虛擬出乙個源點和終點,對應的生產值和消費值就加到與源點和終點的邊上,然後做一次bfs就好了。1 include 2 include 3 include 4 include 5 define inf 9999999996 define open file 7using names...

poj1459多源點多匯點最大流

題意 有許多發電廠,需求電的地方 就說耗電場吧 和一些中轉站,要求出各個耗電場耗電之和,並使之最大。其中邊上的權值為能流通的最大電量。題目解析 這道題目也是很簡單的最大流題目,只需要新增乙個總的源點和乙個總的匯點,然後從總源點到子源點邊上的權值為子源點的發電量,從匯點到總匯點邊上的權值為子匯點的需求...

poj1459多源多匯最大流問題

基本構圖題,多源多匯,新增乙個源點和乙個匯點,所有源點都來自這個源點,同理,所有匯點 都匯於這個匯點,dinic第二戰,本來應該1a的,犯了乙個低階錯誤!while scanf d 要加 啊!sb了,記住這個教訓!此次順帶學習了scanf的又一讀入,忽略空格和已有符號,不錯,並且更加了解了 dini...