https://www.luogu.org/problemnew/show/P3254
思路:这道题很水,s向每个单位连弧,容量为单位的人数,每个餐桌向t连弧,容量为餐桌容量,每个单位向每个餐桌连容量为1的弧,跑个最大流就好了。
#include <bits/stdc++.h>
using namespace std;
const int maxn=1005;
const int INF=0x3f3f3f3f;
struct Edge{
int from,to,cap,flow;
};
struct Dinic{
int n1,n2,m,s,t,sum;
vector<Edge> edges;
vector<int> G[maxn];
bool vis[maxn];
int d[maxn];
int cur[maxn];
void init()
{
int x;
cin>>n1>>n2;
s=0;t=n1+n2+1;
for(int i=1;i<=n1;i++)
{
scanf("%d",&x);
sum+=x;
AddEdge(s,i,x);
for(int j=n1+1;j<=n1+n2;j++)