題意:
給幾個發電站,給幾個消耗站,再給幾個**點。
發電站只發電,消耗站只消耗電,**點只是**電,再給各個傳送線的傳電能力。
問你消耗站能獲得的最多電是多少。
思路:這題建圖是比較顯然的,超源點和發電戰之間連邊,容量是發電量,消耗站和超匯點之間連邊,容量是消耗量,然後輸電線本來就是邊,這樣就建好圖了,剩下的就是套最大流的模板了。
此題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...