POJ1459解題報告

2021-05-21 19:53:17 字數 1121 閱讀 6597

已經好幾天沒寫解題報告了,今天年初一,呵呵,寫乙個,為今年開個好頭。下面步入正題:

poj1459這道題目的要求是求最大的消耗量。我們新增乙個源點s和乙個匯點t,與s相連的是所有的np(生產點),邊權值為其自己能產生的數值;與t相連的是所有的nc(消耗點),邊權值為其消耗最大值。至此便完成了網路的構圖。然後直接套用最大流的演算法模版即可解決。我使用的是ek演算法。

什麼是ek演算法?ek演算法的原理是利用bfs或者dfs每次找到網路中的一條增廣路徑,然後修改其流量值,直至無法找到增廣路徑為止。

下面給出ek的源**:

#include

#include

#include

#define max 65535

using namespace std;

int s,t,n,np,nc,m,tot;

int pre[102],d[102],fx[102],f[102][102],c[102][102];

char str[50];

bool visit[102];

void init()

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

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

tot=0;

}bool bfs()

if(f[i][x]>0&&f[i][x]>temp)

if(temp>0)

j=t;

while(pre[j]!=-1)//修改流量值

tot+=delta;   

return true;

}       

}         

} head++;               

}   

return false;

}void deal()

int main()

{while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=eof)

{init();

deal();

cout《除ek演算法外,最大流還有更好的實現方法,如sap,dinic,預留推進演算法。。都是些很不錯的演算法。

最大流是網路流的基礎,一定要牢牢掌握,而最大流的根本是增光路徑定理和最大流最小割定理,所以一定要理解好這兩個理論基礎。

poj1459 多源點網路流

題意 有n個點,np個供電點,nc個消費點,m條線路,接來題目先給出的是m條帶權路徑,然後是np個供電點和權值,接著就是nc個消費點和權值。題目要我們求出給定的圖最大能消費的總電量 就是求最大流 思路 建乙個超級源點,乙個超級匯點。超級源點連線所以供電站,所以消費點連線超級匯點。跑一遍網路流即可。i...

poj1459 網路流經典

題意 給幾個發電站,給幾個消耗站,再給幾個 點。發電站只發電,消耗站只消耗電,點只是 電,再給各個傳送線的傳電能力。問你消耗站能獲得的最多電是多少。思路 增加乙個超級源點,和超級匯點。把所給的發電站都和超級源點相連,把所給的消耗戰都和超級匯點相連。用ek求最大流。include include us...

POJ 1459 最大流 第二題

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