Submission #64236802
Source Code Expand
Copy
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <inttypes.h>int ec[412345];struct edge_s {int to, cost;} *es[412345];void ae(int from, int to, int cost) {es[from] = realloc(es[from], sizeof(*es[from]) * (ec[from] + 1));if (es[from] == NULL) exit(2);es[from][ec[from]++] = (struct edge_s){ to, cost };}struct q_s {int64_t cost;int node;};
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <inttypes.h> int ec[412345]; struct edge_s { int to, cost; } *es[412345]; void ae(int from, int to, int cost) { es[from] = realloc(es[from], sizeof(*es[from]) * (ec[from] + 1)); if (es[from] == NULL) exit(2); es[from][ec[from]++] = (struct edge_s){ to, cost }; } struct q_s { int64_t cost; int node; }; int qsize = 0, qcap = 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 < qsize && q[minpos].cost > q[c].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(int64_t cost, int node) { if (qsize >= qcap) { qcap = qsize + 1; q = realloc(q, sizeof(*q) * qcap); if (q == NULL) exit(2); } q[qsize++] = (struct q_s){ cost, node }; qadjust(qsize - 1); } struct q_s qget(void) { struct q_s res; if (qsize <= 0) exit(42); res = q[0]; if (--qsize > 0) { q[0] = q[qsize]; qadjust(0); } return res; } int64_t mincost[412345]; int main(void) { int N, M, X; int i; if (scanf("%d%d%d", &N, &M, &X) != 3) return 1; for (i = 0; i < M; i++) { int u, v; if (scanf("%d%d", &u, &v) != 2) return 1; ae(u, v, 1); ae(N + v, N + u, 1); } for (i = 1; i < N; i++) { ae(i, N + i, X); ae(N + i, i, X); } ae(N + N, N, 0); memset(mincost, -1, sizeof(mincost)); mincost[1] = 0; qadd(0, 1); while (qsize > 0) { struct q_s cur = qget(); if (mincost[cur.node] == cur.cost) { for (i = 0; i < ec[cur.node]; i++) { int nn = es[cur.node][i].to; int64_t nc = mincost[cur.node] + es[cur.node][i].cost; if (mincost[nn] < 0 || nc < mincost[nn]) { mincost[nn] = nc; qadd(nc, nn); } } } } printf("%" PRId64 "\n", mincost[N]); return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Flip Edge |
User | mikecat |
Language | C (gcc 12.2.0) |
Score | 425 |
Code Size | 2023 Byte |
Status | AC |
Exec Time | 175 ms |
Memory | 27036 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 425 / 425 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt, 01_random_56.txt, 01_random_57.txt, 01_random_58.txt, 01_random_59.txt, 01_random_60.txt, 01_random_61.txt, 01_random_62.txt, 01_random_63.txt, 01_random_64.txt, 01_random_65.txt, 01_random_66.txt, 01_random_67.txt, 01_random_68.txt, 01_random_69.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 2 ms | 4808 KB |
00_sample_01.txt | AC | 2 ms | 4788 KB |
00_sample_02.txt | AC | 2 ms | 4944 KB |
00_sample_03.txt | AC | 2 ms | 4844 KB |
01_random_04.txt | AC | 170 ms | 23820 KB |
01_random_05.txt | AC | 148 ms | 23944 KB |
01_random_06.txt | AC | 155 ms | 22572 KB |
01_random_07.txt | AC | 161 ms | 23876 KB |
01_random_08.txt | AC | 148 ms | 23796 KB |
01_random_09.txt | AC | 157 ms | 22560 KB |
01_random_10.txt | AC | 161 ms | 23856 KB |
01_random_11.txt | AC | 163 ms | 23940 KB |
01_random_12.txt | AC | 153 ms | 22548 KB |
01_random_13.txt | AC | 161 ms | 23720 KB |
01_random_14.txt | AC | 163 ms | 23828 KB |
01_random_15.txt | AC | 150 ms | 22460 KB |
01_random_16.txt | AC | 175 ms | 23764 KB |
01_random_17.txt | AC | 158 ms | 23916 KB |
01_random_18.txt | AC | 158 ms | 22464 KB |
01_random_19.txt | AC | 161 ms | 23732 KB |
01_random_20.txt | AC | 147 ms | 23784 KB |
01_random_21.txt | AC | 147 ms | 22532 KB |
01_random_22.txt | AC | 158 ms | 23700 KB |
01_random_23.txt | AC | 165 ms | 23852 KB |
01_random_24.txt | AC | 153 ms | 22476 KB |
01_random_25.txt | AC | 157 ms | 23684 KB |
01_random_26.txt | AC | 156 ms | 23912 KB |
01_random_27.txt | AC | 148 ms | 22544 KB |
01_random_28.txt | AC | 157 ms | 23824 KB |
01_random_29.txt | AC | 145 ms | 23912 KB |
01_random_30.txt | AC | 145 ms | 22456 KB |
01_random_31.txt | AC | 133 ms | 17320 KB |
01_random_32.txt | AC | 35 ms | 9232 KB |
01_random_33.txt | AC | 82 ms | 13696 KB |
01_random_34.txt | AC | 115 ms | 22520 KB |
01_random_35.txt | AC | 66 ms | 12504 KB |
01_random_36.txt | AC | 77 ms | 14800 KB |
01_random_37.txt | AC | 67 ms | 11696 KB |
01_random_38.txt | AC | 39 ms | 18460 KB |
01_random_39.txt | AC | 64 ms | 13484 KB |
01_random_40.txt | AC | 101 ms | 20996 KB |
01_random_41.txt | AC | 67 ms | 20464 KB |
01_random_42.txt | AC | 18 ms | 7388 KB |
01_random_43.txt | AC | 119 ms | 20020 KB |
01_random_44.txt | AC | 52 ms | 13492 KB |
01_random_45.txt | AC | 143 ms | 21868 KB |
01_random_46.txt | AC | 106 ms | 22116 KB |
01_random_47.txt | AC | 140 ms | 27028 KB |
01_random_48.txt | AC | 93 ms | 22024 KB |
01_random_49.txt | AC | 168 ms | 26892 KB |
01_random_50.txt | AC | 98 ms | 21984 KB |
01_random_51.txt | AC | 149 ms | 27036 KB |
01_random_52.txt | AC | 91 ms | 22028 KB |
01_random_53.txt | AC | 150 ms | 26948 KB |
01_random_54.txt | AC | 92 ms | 22048 KB |
01_random_55.txt | AC | 146 ms | 26936 KB |
01_random_56.txt | AC | 95 ms | 22052 KB |
01_random_57.txt | AC | 98 ms | 22008 KB |
01_random_58.txt | AC | 93 ms | 22040 KB |
01_random_59.txt | AC | 129 ms | 21940 KB |
01_random_60.txt | AC | 156 ms | 22112 KB |
01_random_61.txt | AC | 146 ms | 22080 KB |
01_random_62.txt | AC | 114 ms | 15072 KB |
01_random_63.txt | AC | 110 ms | 15232 KB |
01_random_64.txt | AC | 112 ms | 15080 KB |
01_random_65.txt | AC | 1 ms | 4800 KB |
01_random_66.txt | AC | 2 ms | 4960 KB |
01_random_67.txt | AC | 2 ms | 4864 KB |
01_random_68.txt | AC | 13 ms | 20900 KB |
01_random_69.txt | AC | 7 ms | 11988 KB |