提出 #21472629
ソースコード 拡げる
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto &i:a)
#define all(x) (x).begin(),(x).end()
//#pragma GCC optimize ("-O3")
using namespace std;
void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); _main(); }
typedef long long ll; const int inf = INT_MAX / 2; const ll infl = 1LL << 60;
template<class T>bool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; }
//---------------------------------------------------------------------------------------------------
/*---------------------------------------------------------------------------------------------------
∧_∧
∧_∧ (´<_` ) Welcome to My Coding Space!
( ´_ゝ`) / ⌒i @hamayanhamayan0
/ \ | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ _/ .| .|____
\/____/ (u ⊃
---------------------------------------------------------------------------------------------------*/
int N, M, Xab, Xac, Xbc; string S;
vector<pair<int, int>> E[101010];
enum { A, B, C, A2, B2, C2 };
//---------------------------------------------------------------------------------------------------
template<typename T> using min_priority_queue = priority_queue<T, vector<T>, greater<T>>;
int vis[101010];
void dijk(int s, vector<ll>& D) {
rep(i, 0, N + 12) D[i] = infl;
rep(i, 0, N + 12) vis[i] = 0;
min_priority_queue<pair<ll, int>> que;
D[s] = 0;
que.push({ 0, s });
while (!que.empty()) {
auto q = que.top(); que.pop();
ll cst = q.first;
int cu = q.second;
if (vis[cu]) continue;
vis[cu] = 1;
fore(p, E[cu]) {
ll cst2 = cst + p.second;
int to = p.first;
if (chmin(D[to], cst2)) que.push({ D[to], to });
}
}
}
//---------------------------------------------------------------------------------------------------
void _main() {
cin >> N >> M >> Xab >> Xac >> Xbc >> S;
rep(i, 0, M) {
int a, b, c; cin >> a >> b >> c;
a--; b--;
E[a].push_back({ b, c });
E[b].push_back({ a, c });
}
rep(i, 0, N) {
if (S[i] == 'A') {
E[i].push_back({ N + A, 0 });
E[N+A2].push_back({ i, 0 });
} else if (S[i] == 'B') {
E[i].push_back({ N + B, 0 });
E[N + B2].push_back({ i, 0 });
} else if (S[i] == 'C') {
E[i].push_back({ N + C, 0 });
E[N + C2].push_back({ i, 0 });
}
}
E[N + A].push_back({ N + B2, Xab });
E[N + A].push_back({ N + C2, Xac });
E[N + B].push_back({ N + A2, Xab });
E[N + B].push_back({ N + C2, Xbc });
E[N + C].push_back({ N + A2, Xac });
E[N + C].push_back({ N + B2, Xbc });
vector<ll> dst(N + 12);
dijk(0, dst);
cout << dst[N - 1] << endl;
}
提出情報
| 提出日時 |
|
| 問題 |
J - ワープ |
| ユーザ |
hamayanhamayan |
| 言語 |
C++ (GCC 9.2.1) |
| 得点 |
6 |
| コード長 |
3216 Byte |
| 結果 |
AC |
| 実行時間 |
101 ms |
| メモリ |
15216 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
6 / 6 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
| All |
almost_line_00.txt, almost_line_01.txt, almost_line_02.txt, almost_line_03.txt, almost_line_04.txt, direct_00.txt, direct_01.txt, direct_02.txt, handmade_00.txt, handmade_01.txt, max_line_00.txt, middle_warp_00.txt, middle_warp_01.txt, middle_warp_02.txt, middle_warp_03.txt, middle_warp_04.txt, middle_warp_05.txt, middle_warp_06.txt, middle_warp_07.txt, middle_warp_08.txt, middle_warp_09.txt, middle_warp_10.txt, middle_warp_11.txt, path_based_random_00.txt, path_based_random_01.txt, path_based_random_02.txt, path_based_random_03.txt, path_based_random_04.txt, path_based_random_05.txt, path_based_random_06.txt, path_based_random_07.txt, path_based_random_08.txt, path_based_random_09.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, warp2_00.txt, warp2_01.txt, warp2_02.txt, warp2_03.txt, warp2_04.txt, warp2_05.txt, wide_00.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| almost_line_00.txt |
AC |
96 ms |
13148 KiB |
| almost_line_01.txt |
AC |
63 ms |
10560 KiB |
| almost_line_02.txt |
AC |
19 ms |
6808 KiB |
| almost_line_03.txt |
AC |
62 ms |
10260 KiB |
| almost_line_04.txt |
AC |
52 ms |
9492 KiB |
| direct_00.txt |
AC |
85 ms |
15216 KiB |
| direct_01.txt |
AC |
64 ms |
11480 KiB |
| direct_02.txt |
AC |
18 ms |
6880 KiB |
| handmade_00.txt |
AC |
6 ms |
5960 KiB |
| handmade_01.txt |
AC |
6 ms |
5992 KiB |
| max_line_00.txt |
AC |
87 ms |
13088 KiB |
| middle_warp_00.txt |
AC |
94 ms |
14324 KiB |
| middle_warp_01.txt |
AC |
63 ms |
11516 KiB |
| middle_warp_02.txt |
AC |
90 ms |
13832 KiB |
| middle_warp_03.txt |
AC |
80 ms |
12548 KiB |
| middle_warp_04.txt |
AC |
84 ms |
13184 KiB |
| middle_warp_05.txt |
AC |
56 ms |
10340 KiB |
| middle_warp_06.txt |
AC |
57 ms |
10440 KiB |
| middle_warp_07.txt |
AC |
69 ms |
10696 KiB |
| middle_warp_08.txt |
AC |
67 ms |
11792 KiB |
| middle_warp_09.txt |
AC |
76 ms |
13068 KiB |
| middle_warp_10.txt |
AC |
83 ms |
12968 KiB |
| middle_warp_11.txt |
AC |
77 ms |
12860 KiB |
| path_based_random_00.txt |
AC |
101 ms |
14268 KiB |
| path_based_random_01.txt |
AC |
74 ms |
11256 KiB |
| path_based_random_02.txt |
AC |
70 ms |
11592 KiB |
| path_based_random_03.txt |
AC |
69 ms |
10792 KiB |
| path_based_random_04.txt |
AC |
56 ms |
9872 KiB |
| path_based_random_05.txt |
AC |
77 ms |
12512 KiB |
| path_based_random_06.txt |
AC |
76 ms |
12044 KiB |
| path_based_random_07.txt |
AC |
40 ms |
8128 KiB |
| path_based_random_08.txt |
AC |
90 ms |
12968 KiB |
| path_based_random_09.txt |
AC |
50 ms |
9076 KiB |
| random_00.txt |
AC |
93 ms |
14564 KiB |
| random_01.txt |
AC |
85 ms |
12948 KiB |
| random_02.txt |
AC |
40 ms |
8212 KiB |
| random_03.txt |
AC |
43 ms |
8764 KiB |
| random_04.txt |
AC |
40 ms |
8536 KiB |
| sample_01.txt |
AC |
5 ms |
5928 KiB |
| sample_02.txt |
AC |
6 ms |
5960 KiB |
| sample_03.txt |
AC |
6 ms |
5992 KiB |
| warp2_00.txt |
AC |
84 ms |
14184 KiB |
| warp2_01.txt |
AC |
65 ms |
11176 KiB |
| warp2_02.txt |
AC |
84 ms |
13768 KiB |
| warp2_03.txt |
AC |
68 ms |
12448 KiB |
| warp2_04.txt |
AC |
81 ms |
13100 KiB |
| warp2_05.txt |
AC |
52 ms |
10472 KiB |
| wide_00.txt |
AC |
74 ms |
11532 KiB |