Submission #2009215
Source Code Expand
#include <queue> #include <vector> #include <iostream> #include <algorithm> using namespace std; struct edge { int to, cost, last; long long adv; }; struct state { int pos; long long cost; }; bool operator<(const state& s1, const state& s2) { return s1.cost > s2.cost; } int N, M, S, T, x; long long dr[25259]; vector<int> s[133333], w[133333]; vector<edge> g[25259]; int main() { cin.tie(0); ios_base::sync_with_stdio(false); cin >> N >> M >> S >> T; for (int i = 0; i < M; i++) { cin >> x; s[i].resize(x); w[i].resize(x - 1); for (int j = 0; j < x; j++) cin >> s[i][j]; for (int j = 0; j < x - 1; j++) cin >> w[i][j]; long long cs1 = 0; for (int j = 0; j < x - 1; j++) { g[s[i][j + 1]].push_back(edge{ s[i][j], w[i][j], s[i][0], cs1 }); cs1 += w[i][j]; } long long cs2 = 0; for (int j = x - 2; j >= 0; j--) { g[s[i][j]].push_back(edge{ s[i][j + 1], w[i][j], s[i][x - 1], cs2 }); cs2 += w[i][j]; } } fill(dr, dr + N, 1LL << 60); dr[T] = 0; priority_queue<state> q1; q1.push(state{ T, 0 }); while (!q1.empty()) { int u = q1.top().pos; q1.pop(); for (edge e : g[u]) { long long nd = dr[u] + e.cost; if (dr[e.to] > nd) { dr[e.to] = nd; q1.push(state{ e.to, nd }); } } } for (int i = 0; i < N; i++) { for (edge &e : g[i]) { e.adv += dr[e.last]; } } int l = 0, r = 1000000009; while (r - l > 1) { int m = (l + r) >> 1; fill(dr, dr + N, 1LL << 60); dr[S] = 0; priority_queue<state> que; que.push(state{ S, 0 }); while (!que.empty()) { int u = que.top().pos; que.pop(); for (edge e : g[u]) { long long nd = dr[u] + e.cost; if (dr[e.to] > nd && nd + e.adv <= m) { dr[e.to] = nd; que.push(state{ e.to, nd }); } } } if (dr[T] == 1LL << 60) l = m; else r = m; } cout << r << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - メンテナンス明け |
User | square1001 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1868 Byte |
Status | AC |
Exec Time | 138 ms |
Memory | 11536 KB |
Judge Result
Set Name | Subtask1 | Subtask2 | ||||
---|---|---|---|---|---|---|
Score / Max Score | 50 / 50 | 50 / 50 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Subtask1 | small/00_sample00, small/00_sample01, small/00_sample02, small/10_small-0000, small/10_small-0001, small/10_small-0002, small/10_small-0003, small/10_small-0004, small/10_small-0005, small/10_small-0006, small/10_small-0007, small/10_small-0008, small/10_small-0009, small/10_small-0010, small/10_small-0011, small/10_small-0012, small/10_small-0013, small/10_small-0014, small/10_small-0015, small/10_small-0016, small/10_small-0017, small/10_small-0018, small/10_small-0019, small/30_max_small, small/40_simple_0000, small/40_simple_0001, small/40_simple_0002, small/40_simple_0003, small/40_simple_0004, small/40_simple_0005, small/40_simple_0006, small/40_simple_0007, small/40_simple_0008, small/40_simple_0009, small/40_simple_0010, small/40_simple_0011, small/40_simple_0012, small/40_simple_0013, small/40_simple_0014, small/40_simple_0015, small/40_simple_0016, small/40_simple_0017, small/40_simple_0018, small/40_simple_0019, small/90_dijkstra_killer_00, small/90_dijkstra_killer_01, small/91_tayama_killer_00, small/91_tayama_killer_01, small/91_tayama_killer_02, small/91_tayama_killer_03, small/91_tayama_killer_04, small/91_tayama_killer_05 |
Subtask2 | large/20_large-00, large/20_large-01, large/20_large-02, large/20_large-03, large/20_large-04, large/31_max_large |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
large/20_large-00 | AC | 119 ms | 11536 KB |
large/20_large-01 | AC | 120 ms | 11536 KB |
large/20_large-02 | AC | 138 ms | 11536 KB |
large/20_large-03 | AC | 118 ms | 11476 KB |
large/20_large-04 | AC | 129 ms | 11532 KB |
large/31_max_large | AC | 22 ms | 9088 KB |
small/00_sample00 | AC | 4 ms | 7168 KB |
small/00_sample01 | AC | 4 ms | 7168 KB |
small/00_sample02 | AC | 4 ms | 7168 KB |
small/10_small-0000 | AC | 4 ms | 7168 KB |
small/10_small-0001 | AC | 4 ms | 7168 KB |
small/10_small-0002 | AC | 4 ms | 7168 KB |
small/10_small-0003 | AC | 4 ms | 7168 KB |
small/10_small-0004 | AC | 4 ms | 7168 KB |
small/10_small-0005 | AC | 4 ms | 7168 KB |
small/10_small-0006 | AC | 4 ms | 7168 KB |
small/10_small-0007 | AC | 4 ms | 7168 KB |
small/10_small-0008 | AC | 4 ms | 7168 KB |
small/10_small-0009 | AC | 4 ms | 7168 KB |
small/10_small-0010 | AC | 4 ms | 7168 KB |
small/10_small-0011 | AC | 4 ms | 7168 KB |
small/10_small-0012 | AC | 4 ms | 7168 KB |
small/10_small-0013 | AC | 4 ms | 7168 KB |
small/10_small-0014 | AC | 4 ms | 7168 KB |
small/10_small-0015 | AC | 4 ms | 7168 KB |
small/10_small-0016 | AC | 4 ms | 7168 KB |
small/10_small-0017 | AC | 4 ms | 7168 KB |
small/10_small-0018 | AC | 4 ms | 7168 KB |
small/10_small-0019 | AC | 4 ms | 7168 KB |
small/30_max_small | AC | 4 ms | 7168 KB |
small/40_simple_0000 | AC | 4 ms | 7168 KB |
small/40_simple_0001 | AC | 4 ms | 7168 KB |
small/40_simple_0002 | AC | 4 ms | 7168 KB |
small/40_simple_0003 | AC | 4 ms | 7040 KB |
small/40_simple_0004 | AC | 4 ms | 7168 KB |
small/40_simple_0005 | AC | 4 ms | 7168 KB |
small/40_simple_0006 | AC | 4 ms | 7040 KB |
small/40_simple_0007 | AC | 4 ms | 7040 KB |
small/40_simple_0008 | AC | 4 ms | 7168 KB |
small/40_simple_0009 | AC | 4 ms | 7040 KB |
small/40_simple_0010 | AC | 4 ms | 7168 KB |
small/40_simple_0011 | AC | 4 ms | 7040 KB |
small/40_simple_0012 | AC | 4 ms | 7040 KB |
small/40_simple_0013 | AC | 4 ms | 7040 KB |
small/40_simple_0014 | AC | 4 ms | 7040 KB |
small/40_simple_0015 | AC | 4 ms | 7168 KB |
small/40_simple_0016 | AC | 4 ms | 7040 KB |
small/40_simple_0017 | AC | 4 ms | 7168 KB |
small/40_simple_0018 | AC | 4 ms | 7040 KB |
small/40_simple_0019 | AC | 4 ms | 7040 KB |
small/90_dijkstra_killer_00 | AC | 4 ms | 7168 KB |
small/90_dijkstra_killer_01 | AC | 4 ms | 7168 KB |
small/91_tayama_killer_00 | AC | 4 ms | 7040 KB |
small/91_tayama_killer_01 | AC | 4 ms | 7040 KB |
small/91_tayama_killer_02 | AC | 4 ms | 7168 KB |
small/91_tayama_killer_03 | AC | 4 ms | 7168 KB |
small/91_tayama_killer_04 | AC | 4 ms | 7168 KB |
small/91_tayama_killer_05 | AC | 4 ms | 7168 KB |