【NOI2008】志愿者招募
费用流+建图
就看看代码吧。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int inf=(1<<30);
const int N=1e3+10;
const int M=1e4+5;
struct edge{
int v,f,c,nxt;
}e[M<<2];
int first[N],cnt=1;
inline void add(int u,int v,int f,int c){
e[++cnt].v=v;e[cnt].f=f;e[cnt].c=c;
e[cnt].nxt=first[u];first[u]=cnt;
e[++cnt].v=u;e[cnt].f=0;e[cnt].c=-c;
e[cnt].nxt=first