什麼是網路流?
得到的sum值就是最大流這是一道模板題。
給定 n 個點,m 條邊,給定每條邊的容量,求從點 s 到點 t 的最大流。
第一行四個整數n,m,s,t。
接下來的 m 行,每行三個整數u,v,c,表示從 u 到 v,流量為 c 的一條邊。
資料保證有 1≤n≤100,1≤m≤5000,0≤c≤231−1。
輸出點 s 到點 t 的最大流。
7 14 1 7
1 2 5
1 3 6
1 4 5
2 3 2
2 5 3
3 2 2
3 4 3
3 5 3
3 6 7
4 6 5
5 6 1
6 5 1
5 7 8
6 7 7
14
#include//時間複雜度為o(n^2*m)
#include#include#include#define int long long
const int inf=0x3f3f3f3f;
const int maxn=3e5+10;
using namespace std;
struct edgee[maxn<<1];//表示兩倍maxn值
int s,t,n,head[maxn],q[maxn],level[maxn],tot;
//head[i]陣列表示i點的鄰接點第幾條邊開始算,tot為head陣列計數
//q陣列用來模擬廣搜的佇列,s,t表示隊頭隊尾
//level陣列用來表式進入某點時的最小層次
void add_edge(int u,int v,int c)//鏈式前向星,將鏈式圖轉換成一維數**
; head[u]=tot++;
}bool bfs()}}
}return false;
}int dfs(int f,int u)
int d=0,used=0;
for(int i=head[u];i!=-1;i=e[i].nxt)}}
if(!used)
return used;
}int dinic()//廣搜裡套深搜為了防止廣搜不斷深入沒有結束點,並且只有一條增廣路徑
}return max_flow;
}signed main()
cout << dinic() << endl;
return 0;
}
網路流之最大流問題
網路流的三個性質 1 容量限制 f u,v c u,v 2 反對稱性 f u,v f v,u 3 流量平衡 對於不是源點也不是匯點的任意結點,流入該結點的流量和等於流出該結點的流量和。只要滿足這三個性質,就是乙個合法的網路流.最大流問題,就是求在滿足網路流性質的情況下,源點 s 到匯點 t 的最大流...
網路流之最大流
網路流之最大流 一 問題引入。有n個排水口,不同的排水口之間有m條水管連線,水一開始從源點s流出,最終到達t。每條邊 水管 都有乙個最大的流量。除了s,t外,每個排水口的流入量都要等於流出量,詢問最多能有多少水到達終點t 如圖所示 即poj 1273 可以將問題進行如下整理 1 用c e 表示每條邊...
網路流之最大流
因為網上介紹網路流和最大流理論的文章非常的多,也都解釋的非常清晰並附帶 再加上繪圖技術不佳,語文表達極差,就只講解一下程式實現部分。想看理論講解及演算法正確性證明的讀者可以上網搜一搜,這裡推薦一篇部落格,鏈結如下 那麼,既然網上的資源那麼多,為什麼還要寫這篇部落格呢?一是為了湊數做筆記,二是網上的許...