結果
問題 | No.2805 Go to School |
ユーザー |
|
提出日時 | 2024-06-30 19:32:00 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 4,256 bytes |
コンパイル時間 | 3,211 ms |
コンパイル使用メモリ | 258,932 KB |
実行使用メモリ | 25,136 KB |
最終ジャッジ日時 | 2024-07-04 21:13:19 |
合計ジャッジ時間 | 6,818 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 WA * 1 |
other | AC * 26 WA * 8 |
ソースコード
#line 2 "library/template/template.hpp"#include <bits/stdc++.h>#line 3 "library/template/macro.hpp"#define all(x) std::begin(x), std::end(x)#define rall(x) std::rbegin(x), std::rend(x)#define elif else if#define updiv(N, X) (((N) + (X) - (1)) / (X))#define sigma(a, b) ((a + b) * (b - a + 1) / 2)#define INT(...) \int __VA_ARGS__; \scan(__VA_ARGS__)#define LL(...) \ll __VA_ARGS__; \scan(__VA_ARGS__)#define STR(...) \string __VA_ARGS__; \scan(__VA_ARGS__)#define CHR(...) \char __VA_ARGS__; \scan(__VA_ARGS__)#define DOU(...) \double __VA_ARGS__; \scan(__VA_ARGS__)#define LD(...) \ld __VA_ARGS__; \scan(__VA_ARGS__)#define pb push_back#define eb emplace_back#line 3 "library/template/alias.hpp"using ll = long long;using ld = long double;using pii = std::pair<int, int>;using pll = std::pair<ll, ll>;constexpr int inf = 1 << 30;constexpr ll INF = 1LL << 60;constexpr int dx[8] = {1, 0, -1, 0, 1, -1, 1, -1};constexpr int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};constexpr int mod = 998244353;constexpr int MOD = 1e9 + 7;#line 3 "library/template/func.hpp"template <typename T>inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); }template <typename T>inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }template <typename T, typename U>std::ostream &operator<<(std::ostream &os, const std::pair<T, U> &p) {os << p.first << " " << p.second;return os;}template <typename T, typename U>std::istream &operator>>(std::istream &is, std::pair<T, U> &p) {is >> p.first >> p.second;return is;}template <typename T>std::ostream &operator<<(std::ostream &os, const std::vector<T> &v) {for (auto it = std::begin(v); it != std::end(v);) {os << *it << ((++it) != std::end(v) ? " " : "");}return os;}template <typename T>std::istream &operator>>(std::istream &is, std::vector<T> &v) {for (T &in : v) {is >> in;}return is;}inline void scan() {}template <class Head, class... Tail>inline void scan(Head &head, Tail &...tail) {std::cin >> head;scan(tail...);}template <class T>inline void print(const T &t) { std::cout << t << '\n'; }template <class Head, class... Tail>inline void print(const Head &head, const Tail &...tail) {std::cout << head << ' ';print(tail...);}template <class... T>inline void fin(const T &...a) {print(a...);exit(0);}#line 3 "library/template/util.hpp"struct IOSetup {IOSetup() {std::cin.tie(nullptr);std::ios::sync_with_stdio(false);std::cout.tie(0);std::cout << std::fixed << std::setprecision(12);std::cerr << std::fixed << std::setprecision(12);}} IOSetup;#line 3 "library/template/debug.hpp"#ifdef LOCAL#include <debug.hpp>#else#define debug(...)#endif#line 8 "library/template/template.hpp"using namespace std;#line 2 "B.cpp"vector<ll> dijkstra(const vector<vector<pair<int, ll>>> &G, const int &s) {int N = G.size();vector<ll> dis(N, INF);priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;dis[s] = 0;pq.emplace(dis[s], s);while (!pq.empty()) {pair<ll, int> p = pq.top();pq.pop();int v = p.second;if (dis[v] < p.first) {continue;}for (auto &[to, cost] : G[v]) {if (dis[to] > dis[v] + cost) {dis[to] = dis[v] + cost;pq.emplace(dis[to], to);}}}return dis;}int main() {INT(N, M, L);LL(S, E);vector<vector<pair<int, ll>>> G(N);for (int i = 0; i < M; i++) {INT(a, b);a--, b--;LL(t);G[a].push_back({b, t});G[b].push_back({a, t});}vector<int> T(L);scan(T);auto dis1 = dijkstra(G, 0);auto dis2 = dijkstra(G, N - 1);if (dis1[N - 1] < S) {fin(dis1[N - 1]);}ll ans = INF;for (int i = 0; i < L; i++) {int t = T[i] - 1;if (dis1[t] < S + E) {chmin(ans, max(dis1[t], S) + 1 + dis2[t]);}}print(ans == INF ? -1 : ans);}