portal1:luogu
如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。
第一行包含四個正整數\(n,m,s,t\),分別表示點的個數,有向邊的個數,源點序號,匯點序號。
接下來\(m\)行每行包含三個正整數\(u_i,v_i,w_i\),表示第\(i\)條有向邊從\(w_i\)出發,到達\(v_i\),邊權為\(w_i\)(即該邊最大流量為\(w_i\))。
一行,包含乙個正整數,即為該網路的最大流。
4 5 4 3
4 2 30
4 3 20
2 3 20
2 1 30
1 3 40
50
資料規模:
對於\(30\%\)的資料:\(n \leq 10,m \leq 25\);
對於\(70\%\)的資料:\(n \leq 200,m \leq 1000\);
對於\(100\%\)的資料:\(n \leq 10000,m \leq 100000\)。
樣例說明:
題目中存在\(3\)條路徑:
\(4 \to 2 \to 3\),該路線可通過\(20\)的流量
\(4 \to 3\),可通過\(20\)的流量
\(4 \to 2 \to 1 \to 3\),可通過\(10\)的流量(邊\(4 \to 2\)之前已經耗費了\(20\)的流量)
故流量總計\(20+20+10=50\),輸出\(50\)。
模板題,求最大流。
emonds karp(ek)演算法
#include#include#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f, maxn=10005, maxm=200005;
int n, m, s, t, u, v, val, cnt, head[maxn], dis[maxn], pre[maxn];
queueq;
struct node edge[maxm];
inline void addedge(int u, int v, int w)
inline bool emonds_karp()
if (dis[t]) break;}}
return dis[t];
}int main()
int ans=0;
while (emonds_karp())
ans+=dis[t];
}printf("%d\n",ans);
return 0;
}
dinic演算法
#include#include#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f, maxn=10005, maxm=200005;
struct node edge[maxm];
queueq;
int n, m, s, t, u, v, cnt, val, dis[maxn], head[maxn];
inline void addedge(int u, int v, int w)
inline bool bfs() }}
if (~dis[t]) return 1;
return 0;
}inline int dfs(int u, int flow)
}return flow-ret;
}inline int dinic()
int main()
printf("%d\n",dinic());
return 0;
}
improved shortest augmenting path(isap)演算法
#include#include#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f, maxn=10005, maxm=200005;
queueq;
int n, m, s, t, u, v, val, cnt, ans, head[maxn], head1[maxn], deep[maxn], pre[maxn], a[maxn];
struct node edge[maxm];
inline void addedge(int u, int v, int w)
inline void bfs(int t)
}}int calc(int s,int t)
u=t;
while (u!=s)
return ans;
}inline void isap(int s, int t)
bool flag=0;
for (int &i=head1[u]; ~i; i=edge[i].nxt)
if (deep[u]==deep[edge[i].v]+1 && edge[i].w)
if (!flag)
}}int main()
isap(s, t);
printf ("%d\n",ans);
return 0;
}
洛谷P3376 模板 網路最大流
如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行,包含乙個正...
洛谷 P3376 模板 網路最大流
題目描述 如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。輸入格式 第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 輸出格式 一行,...
洛谷 P3376 模板 網路最大流
題目傳送門 如題,給出乙個網路圖,以及其源點和匯點,求出其網路最大流。第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含三個正整數ui vi wi,表示第i條有向邊從ui出發,到達vi,邊權為wi 即該邊最大流量為wi 一行,包含乙個正整數,即...