A 最大流 (10 分)
这是一道模板题。
给定 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 <bits/stdc++.h>
#define int long long
const int inf=0x3f3f3f3f;
const int maxn=3e5+10;
using namespace std;
typedef struct edge
{
int first,c,next;//fisrt为边的终点,next为同起点的上一条边的编号
}edg;
edg e[maxn<<1];//e[]是代表边的结构体,first和next分别为该边的终点和与该边同起点的上一条边的编号,c为该边的容量
int n,m,s,t,h