This documentation is automatically generated by online-judge-tools/verification-helper
#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1/ITP1_1_A"
#include "../src/graph/Dijkstra.hpp"
#include <iostream>
int main() {
// int n, m; std::cin >> n >> m;
// zawa::Dijkstra<long long> da(n);
// for (int i = 0 ; i < m ; i++) {
// int a, b; std::cin >> a >> b;
// long long c; std::cin >> c;
// da.add_edge(a - 1, b - 1, c);
// da.add_edge(b - 1, a - 1, c);
// }
// da.build(0);
// std::vector ans(0, 0);
// for (int i = 1 ; i < n ; i++) {
// ans.emplace_back(da.get_route(i) / 2);
// }
// for (size_t i = 0 ; i < ans.size() ; i++) {
// std::cout << ans[i] + 1 << (i == ans.size() - 1 ? '\n' : ' ');
// }
std::cout << "Hello World" << std::endl;
}
/*
* AtCoder Begginer Contest 252 - E Road Reduction
* https://atcoder.jp/contests/abc252/submissions/36151858
*/
#line 1 "test/Dijkstra2.test.cpp"
#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1/ITP1_1_A"
#line 2 "src/graph/Dijkstra.hpp"
#include <vector>
#include <queue>
#include <utility>
#include <limits>
namespace zawa {
template <class COST>
class Dijkstra {
public:
Dijkstra(std::size_t n)
: G(n)
, dist(n, _inf)
, prevs(n, -1)
, route(n, -1) {}
struct edge {
int from, to;
COST cost;
};
int add_edge(int from, int to, COST cost) {
int res = (int)edges.size();
edges.push_back({ from, to, cost });
G[from].emplace_back(res);
return res;
}
edge get_edge(int id) {
return edges[id];
}
void build(int s) {
using pci = std::pair<COST, int>;
dist[s] = 0;
std::priority_queue<pci, std::vector<pci>, std::greater<pci>> que;
que.emplace(0, s);
while (que.size()) {
auto [d, v] = que.top();
que.pop();
if (dist[v] < d) {
continue;
}
for (auto id : G[v]) {
edge e = edges[id];
if (dist[e.to] > d + e.cost) {
dist[e.to] = d + e.cost;
prevs[e.to] = v;
route[e.to] = id;
que.emplace(dist[e.to], e.to);
}
}
}
}
COST inf() {
return _inf;
}
COST get_dist(int v) {
return dist[v];
}
int get_prev(int v) {
return prevs[v];
}
int get_route(int v) {
return route[v];
}
private:
static constexpr COST _inf = std::numeric_limits<COST>::max();
std::vector<edge> edges;
std::vector<std::vector<int>> G;
std::vector<COST> dist;
std::vector<int> prevs;
std::vector<int> route;
};
} // namespace zawa
#line 4 "test/Dijkstra2.test.cpp"
#include <iostream>
int main() {
// int n, m; std::cin >> n >> m;
// zawa::Dijkstra<long long> da(n);
// for (int i = 0 ; i < m ; i++) {
// int a, b; std::cin >> a >> b;
// long long c; std::cin >> c;
// da.add_edge(a - 1, b - 1, c);
// da.add_edge(b - 1, a - 1, c);
// }
// da.build(0);
// std::vector ans(0, 0);
// for (int i = 1 ; i < n ; i++) {
// ans.emplace_back(da.get_route(i) / 2);
// }
// for (size_t i = 0 ; i < ans.size() ; i++) {
// std::cout << ans[i] + 1 << (i == ans.size() - 1 ? '\n' : ' ');
// }
std::cout << "Hello World" << std::endl;
}
/*
* AtCoder Begginer Contest 252 - E Road Reduction
* https://atcoder.jp/contests/abc252/submissions/36151858
*/