結果
| 問題 | No.3564 Awkward Timing |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-26 08:21:59 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,249 bytes |
| 記録 | |
| コンパイル時間 | 3,353 ms |
| コンパイル使用メモリ | 343,248 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-05-29 18:43:06 |
| 合計ジャッジ時間 | 22,586 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge2_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 40 % | AC * 38 |
| 満点 | 60 % | RE * 62 |
| 合計 | 40 点 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
cin.exceptions(cin.failbit);
int N, M;
long long K;
cin >> N >> M >> K;
assert(2 <= N && N <= 200'000);
assert(1 <= M && M <= 200'000);
assert(1 <= K && K <= 1'000'000'000'000'000'000);
assert(N <= 2'000 && M <= 2'000 && K <= 2'000);
vector<vector<pair<int, long long>>> E(N);
for (int i = 0; i < M; i++) {
int u, v;
long long t;
cin >> u >> v >> t;
assert(1 <= min(u, v) && max(u, v) <= N);
assert(1 <= t && t <= 1'000'000'000'000'000'000);
u--; v--;
E[u].emplace_back(v, t);
E[v].emplace_back(u, t);
assert(t <= 2'000);
}
vector<long long> D(N, -1);
D[0] = 0;
queue<int> Q;
Q.emplace(0);
while (!Q.empty()) {
int v = Q.front();
Q.pop();
for (auto [u, t] : E[v]) if (D[u] == -1) {
D[u] = (D[v] + t) % K;
Q.emplace(u);
}
}
long long g = K;
for (int i = 0; i < N; i++) {
for (auto [j, t] : E[i]) {
g = __gcd(g, D[i] - D[j] - t);
if (g < 0) g = -g;
}
}
cout << D[N - 1] % g << endl;
return 0;
}