Submission #62323815
Source Code Expand
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int ec[212345], *es[212345];
void ae(int f, int t) {
es[f] = realloc(es[f], sizeof(*es[f]) * (ec[f] + 1));
if (es[f] == NULL) exit(2);
es[f][ec[f]++] = t;
}
struct q_s {
int node;
int64_t cost;
};
int q_cap = 0, q_size = 0;
struct q_s* q;
void qadjust(int pos) {
for (;;) {
int i;
int minpos = pos;
for (i = 1; i <= 2; i++) {
int c = pos * 2 + i;
if (c < q_size && q[c].cost < q[minpos].cost) minpos = c;
}
if (minpos == pos) {
if (pos == 0) return;
pos = (pos - 1) / 2;
} else {
struct q_s temp = q[pos];
q[pos] = q[minpos];
q[minpos] = temp;
pos = minpos;
}
}
}
void qadd(int node, int64_t cost) {
if (q_size >= q_cap) {
q = realloc(q, sizeof(*q) * (q_size + 1));
if (q == NULL) exit(2);
q_cap = q_size + 1;
}
q[q_size].node = node;
q[q_size].cost = cost;
q_size++;
qadjust(q_size - 1);
}
struct q_s qget(void) {
struct q_s ret;
if (q_size <= 0) exit(42);
ret = q[0];
q_size--;
if (q_size > 0) {
q[0] = q[q_size - 1];
qadjust(0);
}
return ret;
}
int N, M;
int A[212345];
int U[212345], V[212345];
int64_t node_cost[212345];
char deleted[212345];
int main(void) {
int i, j;
int64_t ans = 0;
if (scanf("%d%d", &N, &M) != 2) return 1;
for (i = 1; i <= N; i++) {
if (scanf("%d", &A[i]) != 1) return 1;
}
for (i = 0; i < M; i++) {
if (scanf("%d%d", &U[i], &V[i]) != 2) return 1;
ae(U[i], V[i]);
ae(V[i], U[i]);
}
for (i = 1; i <= N; i++) {
for (j = 0; j < ec[i]; j++) {
node_cost[i] += A[es[i][j]];
}
qadd(i, node_cost[i]);
}
while (q_size > 0) {
struct q_s cur = qget();
if (!deleted[cur.node]) {
deleted[cur.node] = 1;
if (ans < cur.cost) ans = cur.cost;
for (i = 0; i < ec[cur.node]; i++) {
int node = es[cur.node][i];
if (!deleted[node]) {
node_cost[node] -= A[cur.node];
qadd(node, node_cost[node]);
}
}
}
}
printf("%" PRId64 "\n", ans);
return 0;
}
/*
全体のコストは、和ではなく最大値である
どれかの頂点を選んで操作を行わないと、先に進めない
操作により、続く操作にかかるコストが上がることはない
→ 今の状態をみて、かかるコストが最小の頂点を選んで操作すれば良い
→ プライオリティーキュー
*/
Submission Info
| Submission Time | |
|---|---|
| Task | E - Erasing Vertices 2 |
| User | mikecat |
| Language | C (gcc 12.2.0) |
| Score | 0 |
| Code Size | 2437 Byte |
| Status | WA |
| Exec Time | 238 ms |
| Memory | 16640 KiB |
Judge Result
| Set Name | Sample | All | ||||||
|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 0 / 500 | ||||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example_00.txt, example_01.txt |
| All | example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example_00.txt | AC | 1 ms | 1628 KiB |
| example_01.txt | AC | 1 ms | 1716 KiB |
| test_00.txt | WA | 196 ms | 14796 KiB |
| test_01.txt | WA | 79 ms | 8764 KiB |
| test_02.txt | AC | 85 ms | 8012 KiB |
| test_03.txt | WA | 222 ms | 15904 KiB |
| test_04.txt | WA | 119 ms | 10180 KiB |
| test_05.txt | WA | 61 ms | 6732 KiB |
| test_06.txt | WA | 186 ms | 13256 KiB |
| test_07.txt | WA | 23 ms | 3888 KiB |
| test_08.txt | AC | 19 ms | 3560 KiB |
| test_09.txt | WA | 64 ms | 8744 KiB |
| test_10.txt | AC | 1 ms | 1596 KiB |
| test_11.txt | AC | 17 ms | 3728 KiB |
| test_12.txt | AC | 11 ms | 3036 KiB |
| test_13.txt | AC | 2 ms | 1864 KiB |
| test_14.txt | WA | 233 ms | 16388 KiB |
| test_15.txt | WA | 224 ms | 16240 KiB |
| test_16.txt | WA | 226 ms | 16256 KiB |
| test_17.txt | WA | 223 ms | 16432 KiB |
| test_18.txt | WA | 222 ms | 16356 KiB |
| test_19.txt | WA | 234 ms | 16428 KiB |
| test_20.txt | WA | 238 ms | 16432 KiB |
| test_21.txt | WA | 226 ms | 16640 KiB |
| test_22.txt | WA | 230 ms | 16428 KiB |
| test_23.txt | WA | 230 ms | 16524 KiB |
| test_24.txt | AC | 81 ms | 9100 KiB |
| test_25.txt | AC | 79 ms | 8980 KiB |
| test_26.txt | AC | 79 ms | 9152 KiB |
| test_27.txt | AC | 78 ms | 8964 KiB |
| test_28.txt | AC | 80 ms | 9088 KiB |
| test_29.txt | AC | 73 ms | 9288 KiB |