Submission #2889204
Source Code Expand
#include <queue> #include <cstddef> #include <utility> #include <vector> #include <limits> #include <unordered_map> #include <cassert> namespace tools { template <typename T> class dijkstra { private: const std::size_t start_node; std::vector<T> distances; std::vector<std::size_t> prev_nodes; std::priority_queue<std::pair<T, std::size_t>, std::vector<std::pair<T, std::size_t>>, std::greater<std::pair<T, std::size_t>>> tasks; std::vector<std::unordered_map<std::size_t, T>> edges; public: static constexpr std::size_t NONE = std::numeric_limits<std::size_t>::max(); dijkstra(const std::size_t node_count, const std::size_t start_node) : start_node(start_node), distances(node_count), prev_nodes(node_count), tasks(), edges(node_count) { assert(start_node < node_count); } void add_edge(const std::size_t from, const std::size_t to, const T distance) { this->edges[from].insert(std::make_pair(to, distance)); } std::vector<T> calc() { this->distances.assign(this->distances.size(), std::numeric_limits<T>::max()); this->prev_nodes.assign(this->prev_nodes.size(), std::size_t(NONE)); this->tasks.push(std::make_pair(0, this->start_node)); while (!this->tasks.empty()) { const std::pair<T, std::size_t> task = this->tasks.top(); this->tasks.pop(); const T& distance = std::get<0>(task); const std::size_t& target_node = std::get<1>(task); if (this->distances[target_node] != std::numeric_limits<T>::max()) { // old task for already visited node continue; } this->distances[target_node] = distance; for (const std::pair<std::size_t, T>& edge : this->edges[target_node]) { const std::size_t& next_node = std::get<0>(edge); const T new_distance = distance + std::get<1>(edge); if (new_distance < this->distances[next_node]) { this->prev_nodes[next_node] = target_node; this->tasks.push(std::make_pair(new_distance, next_node)); } } } return this->distances; } }; } #include <iostream> #include <cstdint> #include <algorithm> int main() { std::uint64_t n, m, s, t; std::cin >> n >> m >> s >> t; tools::dijkstra<std::uint64_t> yen_dijkstra(n, s - 1); tools::dijkstra<std::uint64_t> snuuk_dijkstra(n, t - 1); std::uint64_t u, v, a, b; for (std::uint64_t i = 0; i < m; ++i) { std::cin >> u >> v >> a >> b; yen_dijkstra.add_edge(u - 1, v - 1, a); yen_dijkstra.add_edge(v - 1, u - 1, a); snuuk_dijkstra.add_edge(u - 1, v - 1, b); snuuk_dijkstra.add_edge(v - 1, u - 1, b); } std::vector<std::uint64_t> yen_costs = yen_dijkstra.calc(); std::vector<std::uint64_t> snuuk_costs = snuuk_dijkstra.calc(); std::vector<std::uint64_t> costs(n); for (std::uint64_t i = 0; i < n; ++i) { costs[i] = yen_costs[i] + snuuk_costs[i]; } for (std::uint64_t i = 0; i < n; ++i) { std::cout << 1000000000000000 - *std::min_element(costs.begin(), costs.end()) << std::endl; costs[i] = std::numeric_limits<std::uint64_t>::max(); } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Saving Snuuk |
User | anqooqie |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 3257 Byte |
Status | TLE |
Exec Time | 2105 ms |
Memory | 39676 KB |
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 400 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sampleRnd.txt, sampleT.txt |
All | 00yorimichi.txt, 11_0.txt, 11_1.txt, 11_2.txt, 11_3.txt, 11_4.txt, 1n1m1.txt, 1oo_0.txt, 1oo_1.txt, 1oo_2.txt, 1oo_3.txt, 1oo_4.txt, dangou_0.txt, dangou_1.txt, dangou_2.txt, dangou_3.txt, dangou_4.txt, edge.txt, high_0.txt, high_1.txt, high_2.txt, high_3.txt, high_4.txt, low_0.txt, low_1.txt, low_2.txt, low_3.txt, low_4.txt, oo1_0.txt, oo1_1.txt, oo1_2.txt, oo1_3.txt, oo1_4.txt, path_0.txt, path_1.txt, path_2.txt, path_3.txt, path_4.txt, path_5.txt, rnd_0.txt, rnd_1.txt, rnd_2.txt, rnd_3.txt, rnd_4.txt, sampleRnd.txt, sampleT.txt, slast_0.txt, slast_1.txt, slast_2.txt, slast_3.txt, slast_4.txt, tlast_0.txt, tlast_1.txt, tlast_2.txt, tlast_3.txt, tlast_4.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00yorimichi.txt | TLE | 2105 ms | 38784 KB |
11_0.txt | TLE | 2105 ms | 30712 KB |
11_1.txt | AC | 363 ms | 22000 KB |
11_2.txt | AC | 825 ms | 23800 KB |
11_3.txt | TLE | 2105 ms | 37628 KB |
11_4.txt | TLE | 2105 ms | 33148 KB |
1n1m1.txt | TLE | 2105 ms | 31116 KB |
1oo_0.txt | TLE | 2105 ms | 29940 KB |
1oo_1.txt | TLE | 2105 ms | 30708 KB |
1oo_2.txt | AC | 230 ms | 20976 KB |
1oo_3.txt | TLE | 2105 ms | 31860 KB |
1oo_4.txt | TLE | 2105 ms | 30712 KB |
dangou_0.txt | AC | 230 ms | 17016 KB |
dangou_1.txt | AC | 1022 ms | 23416 KB |
dangou_2.txt | TLE | 2105 ms | 31224 KB |
dangou_3.txt | AC | 166 ms | 12536 KB |
dangou_4.txt | TLE | 2105 ms | 38648 KB |
edge.txt | TLE | 2104 ms | 38784 KB |
high_0.txt | AC | 308 ms | 15480 KB |
high_1.txt | AC | 358 ms | 20592 KB |
high_2.txt | TLE | 2104 ms | 37496 KB |
high_3.txt | AC | 30 ms | 3072 KB |
high_4.txt | TLE | 2105 ms | 27772 KB |
low_0.txt | AC | 207 ms | 20468 KB |
low_1.txt | AC | 255 ms | 22260 KB |
low_2.txt | TLE | 2105 ms | 32636 KB |
low_3.txt | TLE | 2105 ms | 30076 KB |
low_4.txt | AC | 1610 ms | 23156 KB |
oo1_0.txt | TLE | 2105 ms | 33528 KB |
oo1_1.txt | TLE | 2105 ms | 28276 KB |
oo1_2.txt | AC | 1317 ms | 25332 KB |
oo1_3.txt | AC | 416 ms | 23412 KB |
oo1_4.txt | AC | 1187 ms | 25080 KB |
path_0.txt | TLE | 2105 ms | 33280 KB |
path_1.txt | TLE | 2105 ms | 33152 KB |
path_2.txt | TLE | 2104 ms | 18560 KB |
path_3.txt | TLE | 2104 ms | 20736 KB |
path_4.txt | AC | 1215 ms | 11776 KB |
path_5.txt | TLE | 2105 ms | 29056 KB |
rnd_0.txt | TLE | 2105 ms | 30456 KB |
rnd_1.txt | TLE | 2105 ms | 36092 KB |
rnd_2.txt | AC | 67 ms | 6652 KB |
rnd_3.txt | TLE | 2105 ms | 34040 KB |
rnd_4.txt | AC | 902 ms | 25716 KB |
sampleRnd.txt | AC | 1 ms | 256 KB |
sampleT.txt | AC | 1 ms | 256 KB |
slast_0.txt | TLE | 2105 ms | 29940 KB |
slast_1.txt | AC | 279 ms | 23156 KB |
slast_2.txt | TLE | 2105 ms | 35576 KB |
slast_3.txt | AC | 1317 ms | 25588 KB |
slast_4.txt | TLE | 2105 ms | 31608 KB |
tlast_0.txt | AC | 321 ms | 22900 KB |
tlast_1.txt | TLE | 2105 ms | 28536 KB |
tlast_2.txt | TLE | 2105 ms | 34424 KB |
tlast_3.txt | TLE | 2105 ms | 37756 KB |
tlast_4.txt | TLE | 2104 ms | 39676 KB |