网络流Dinic算法
我的模板 例题: https://vjudge.net/problem/HDU-4280 struct Edge { int lst; int from; int to; int cap; int flow; Edge () { } Edge (int llst, int ffrom, int tto, int ccap, int fflow) : lst(llst), from(from), to(tto), cap(ccap), flow(fflow) { } }; // Dinic 算法有3个重点: // 一个是 层次图 // 一个是 阻塞流 // 一个是 cur优化 // 稠密点的可以再加上 炸点优化 class Dinic { public: Edge edge[maxn*2]; int head[maxn]; int cn, cm, cst, ced; int csz; bool vis[maxn]; int dist[maxn]; // 节点到起点层次距离 int cur[maxn]; void init(int n, int m) { cn = n; cm = m; memset(head, 0, sizeof(head)); csz = 2; // 注意 这儿应该是偶数开始 因为 奇数^1等价于减1 偶数^1等价于加一. // 因为我前向星是以0为结尾的