题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549
模板代码:
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int t,cas = 0,maze[20][20],n,m,vis[25],pre[25];
int bfs(int s, int t){
queue<int> q;
memset(vis,0,sizeof(vis));
memset(pre,-1,sizeof(pre));
q.push(s);
vis[s] = 1;
while(!q.empty()){
int tt = q.front(); q.pop();
for(int i = 1; i <= n; i ++){
if(maze[tt][i] > 0 && !vis[i]){
q.push(i); vis[i] = 1; pre[i] = tt;
if(i == t) return 1;
}
}
}
return 0;
}
int MaxFlow(int s, int t){
int flow = 0,d;
while(bfs(s,t)){
d = inf;
for(int i = t; i != s; i = pre[i]) d = min(d,maze[pre[i]][i]);
for(int i = t; i != s; i = pre[i]) maze[pre[i]][i] -= d, maze[i][pre[i]] += d;
flow += d;
}
return flow;
}
int main(){
scanf("%d",&t);
while(t --){
memset(maze,0,sizeof(maze));
int u,v,w;
scanf("%d%d",&n,&m);
for(int i = 1; i <= m; i ++){
scanf("%d%d%d",&u,&v,&w);
maze[u][v] += w;
}
printf("Case %d: %d\n",++cas,MaxFlow(1,n));
}
return 0;
}
最大流算法详解与实现
本文详细介绍了一种解决网络流问题的经典算法——最大流算法,并提供了完整的C++实现代码。通过对算法原理的解析及具体实例的展示,帮助读者理解如何在实际问题中应用该算法求解最大流。
5666

被折叠的 条评论
为什么被折叠?



