結果
| 問題 | No.3564 Awkward Timing |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-26 07:56:15 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 157 ms / 2,000 ms |
| コード長 | 1,164 bytes |
| 記録 | |
| コンパイル時間 | 2,661 ms |
| コンパイル使用メモリ | 342,972 KB |
| 実行使用メモリ | 20,080 KB |
| 最終ジャッジ日時 | 2026-05-29 18:43:00 |
| 合計ジャッジ時間 | 13,152 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge2_1 |
| 純コード判定待ち |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 40 % | AC * 38 |
| 満点 | 60 % | AC * 62 |
| 合計 | 100 点 |
ソースコード
#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);
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);
}
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;
}