Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 405;const int maxm = 41000;const int inf = 0x3fffffff;template <typename T, int N, int M>class Dinic{int m, source, sink, range1, range2;T inf;int head[M], next[M], d[N], q[N], cur[N];struct edge { int v; T c; } e[M];bool bfs(){int i, x, ql(0), qr(0);memset(d, -1, sizeof d);d[q[0] = source] = 0;while (ql <= qr){x = q[ql++];for (i = head[x]; i; i = next[i])if (e[i].c && d[e[i].v] == -1){q[++qr] = e[i].v;d[e[i].v] = d[x] + 1;if (e[i].v == sink) return true;}