已破案, 一个客人存在多种方案,所以n也要开双倍
```
s = 1;
t = 2 + n * 2 + m1 * 2 + m2 * 2;
for (int i = 1; i <= m1; i++)
{
add (1 + i, 1 + m1 + i, 1);
add (s, 1 + i, 1);
}
for (int i = 1; i <= m2; i++)
{
add (1 + m1 * 2 + n * 2 + i, 1 + m1 * 2 + n * 2 + m2 + i, 1);
add (1 + m1 * 2 + n * 2 + m2 + i, t, 1);
}
for (int i = 1; i <= n; i++)
{
add (1 + m1 * 2 + i, 1 + m1 * 2 + n + i, 1);
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m1; j++)
{
int x;
scanf ("%d", &x);
add (1 + m1 + j, 1 + m1 * 2 + i, x);
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m2; j++)
{
int x;
scanf ("%d", &x);
add (1 + m1 * 2 + n + i, 1 + m1 * 2 + n * 2 + j, x);
}
}
```
by shadow_ltq @ 2022-09-20 21:26:26