1 #include2 using namespace std; 3 const int inf=1e9; 4 const int N=100,M=1000; 5 struct node{ 6 int to,rest,next,cost; 7 }e[M]; 8 int head[N],cnt=1; 9 inline void addedge(int x,int y,int z,int c){10 e[++cnt].to=y; e[cnt].rest=z; e[cnt].cost= c; e[cnt].next=head[x];11 e[++cnt].to=x; e[cnt].rest=0; e[cnt].cost=-c; e[cnt].next=head[y];12 }13 int n,m,S,T;14 int dis[N],pre[N];15 bool vis[N];16 int maxflow,mincost;17 inline bool SPFA(){18 static queue Q;19 for(int i=S;i<=T;i++) dis[i]=inf,vis[i]=false;20 Q.push(S); dis[S]=0; vis[S]=true;21 while(!Q.empty()){22 int x=Q.front(); Q.pop();23 vis[x]=false;24 for(int i=head[x];i;i=e[i].next){25 int y=e[i].to;26 if(e[i].rest&&dis[y]>dis[x]+e[i].cost){27 dis[y]=dis[x]+e[i].cost;28 pre[y]=i;29 if(vis[y]=false){30 vis[y]=true;31 Q.push(y);32 }33 }34 }35 }36 return dis[T]