const int null = -1;
const int VMAX = 500;
const int EMAX = 300000;
struct Edge
{
int adj,next,re; //指向的点,下一边的下标,逆边的下标
int r; //余留网边的容量
}h[EMAX+10]; //用下标模拟指针构邻接表
int p[VMAX+10],c;
int n,m,s,t;
int gap[VMAX+10],pre[VMAX+10],dis[VMAX+10];
//插边,k,l为端点,cap为边容量
void insert(int k,int l,int cap)
{
h[++c].adj=l;
h[c].r=cap;
h[c].next=p[k];
p[k]=c;
h[c].re=c+1;
//逆边
h[++c].adj=k;
h[c].r=0;
h[c].next=p[l];
p[l]=c;
h......
阅读全文