| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
明明有10000K空间的啊,我怎么会爆空间呢?我开的各种数组自己测试的时候只有700k,而且队列后来也换成了手写的,不明白为什么会爆空间
代码如下:
#include <cstdio>
#define REP(i, s, t) for (int i = (s); i <= (t); i++)
const int INF = (int)2e9;
const int N = (int)2e2 + 50;
const int M = (int)3e4 + 50;
const int S = (int)1e3 + 50;
inline int min(int a, int b)
{
return a < b ? a : b;
}
int head[N], cnt = 1;
struct edge {int to, next, v;} e[M];
inline void ins(int x, int y, int v)
{
e[++cnt] = (edge){y, head[x], v}; head[x] = cnt;
e[++cnt] = (edge){x, head[y], 0}; head[y] = cnt;
}
int q[N], sq, tq;
int n, s, lev[N], cur[N];
bool bfs()
{
REP(i, 1, n)
lev[i] = -1;
lev[1] = 0;
sq = tq = 1;
q[tq++] = 1;
while (sq != tq) {
int x = q[sq++];
for (int i = head[x]; i; i = e[i].next) {
if (e[i].v && lev[e[i].to] == -1) {
lev[e[i].to] = lev[x] + 1;
q[tq++] = e[i].to;
}
}
}
return lev[n] != -1;
}
bool vst[N][N];
int dfs(int x, int lim)
{
if (x == n)
return lim;
int usd = 0;
for (int i = cur[x]; i; i = e[i].next) {
int tmp = dfs(e[i].to, min(e[i].v, lim - usd));
e[i].v -= tmp;
if (e[i].v)
cur[x] = i;
e[i^1].v += tmp;
usd += tmp;
if (usd == lim)
return lim;
}
if (!usd)
lev[x] = -1;
return usd;
}
int dinic()
{
int maxflow = 0;
while (bfs()) {
REP(i, 1, n) {
cur[i] = head[i];
}
maxflow += dfs(1, INF);
}
return maxflow;
}
int d[S], p[S];
void input()
{
scanf("%d%d", &s, &n);
REP(i, 1, s)
scanf("%d", &d[i]);
REP(i, 1, n) {
int a, k, v = 0;
scanf("%d", &k);
REP(j, 1, k) {
scanf("%d", &a);
if (p[a] == 0) {
v += d[a];
p[a] = i;
} else {
if (!vst[p[a]][i]) {
ins(p[a] + 1, i + 1, INF);
vst[p[a]][i] = vst[i][p[a]] = 1;
}
p[a] = i; //关键,且不能放到里面
}
}
if (v)
ins(1, i + 1, v);
scanf("%d", &v);
ins(i + 1, n + 2, v);
}
n += 2;
}
void go()
{
int ans = dinic();
printf("%d\n", ans);
}
int main()
{
input(); go();
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator