rt,应该是SPFA2函数的锅
#include<bits/stdc++.h>
using namespace std;
#define maxv 220
#define maxe 10300
const int inf=2e9;
int n,m,head[maxv],idx=1,s,t,mincost,pre[maxv],d[maxv],incf[maxv],vis[maxv],a[maxv],b[maxv],flow;
struct node{
int to,next,v,c;
}e[maxe<<1];
inline void add(int u,int v,int w,int k){
e[++idx].to=v,e[idx].next=head[u],e[idx].v=w,e[idx].c=k,head[u]=idx;
e[++idx].to=u,e[idx].next=head[v],e[idx].v=0,e[idx].c=-k,head[v]=idx;
}
queue<int> q;
inline int spfa1(){
memset(d,0x7f,sizeof(d));
memset(vis,0,sizeof(vis));
memset(incf,0x7f,sizeof(incf));
q.push(s),vis[s]=1,d[s]=0,pre[t]=-1;
while(!q.empty()){
int x=q.front();
q.pop();
vis[x]=0;
for(int i=head[x];i;i=e[i].next){
int y=e[i].to;
if(!e[i].v) continue;
if(d[y]>d[x]+e[i].c){
d[y]=d[x]+e[i].c;
pre[y]=i;
incf[y]=min(incf[x],e[i].v);
if(!vis[y]) q.push(y),vis[y]=1;
}
}
}
return pre[t]!=-1;
}
inline int spfa2(){
memset(d,128,sizeof(d));
memset(vis,0,sizeof(vis));
memset(incf,127,sizeof(incf));
// cout<<d[2]+10<<endl;
// while(!q.empty()) q.pop();
q.push(s),vis[s]=1,d[s]=0,pre[t]=-1;
while(!q.empty()){
int x=q.front();
// cout<<d[t]<<endl;
q.pop();
vis[x]=0;
for(int i=head[x];i;i=e[i].next){
int y=e[i].to;
if(!e[i].v) continue;
if(d[y]<d[x]+e[i].c){
d[y]=d[x]+e[i].c;
pre[y]=i;
incf[y]=min(incf[x],e[i].v);
if(!vis[y]) q.push(y),vis[y]=1;
}
}
}
return pre[t]!=-1;
}
inline void update(){
// cout<<1<<endl;
int now=t;
while(now!=s){
int x=pre[now];
e[x].v-=incf[t];
e[x^1].v+=incf[t];
now=e[x^1].to;
}
mincost+=d[t]*incf[t];
// flow+=incf[t];
}
int main(){
scanf("%d%d",&m,&n);
int u;
for(int i=1;i<=m;i++){
scanf("%d",&a[i]);
add(s,i,a[i],0);
}
t=n+m+1;
for(int i=1;i<=n;i++) scanf("%d",&b[i]),add(i+m,t,b[i],0);
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
scanf("%d",&u);
add(i,j+m,inf,u);
}
}
while(spfa1()) update();
printf("%d\n",mincost);
// for(int i=2;i<=m*2;i+=2) e[i].v=a[i/2],e[i^1].v=0;
// for(int i=m*2+2;i<=m*2+2+n*2;i+=2) e[i].v=b[(i-m*2)/2],e[i^1].v=0;
for(int i=2;i<=idx;i+=2){
if(e[i].v>=1e9) break;
if(e[i].to>=1&&e[i].to<=m) e[i].v=a[i/2],e[i^1].v=0;
else e[i].v=b[(i-m*2)/2],e[i^1].v=0;
}
// cout<<e[12].c<<endl;
mincost=0;
while(spfa2()) update();
printf("%d\n",mincost);
return 0;
}
实在调不出来了qwq