結果
問題 |
No.3113 The farthest point
|
ユーザー |
![]() |
提出日時 | 2025-04-19 02:06:44 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,047 bytes |
コンパイル時間 | 1,251 ms |
コンパイル使用メモリ | 114,372 KB |
実行使用メモリ | 21,092 KB |
最終ジャッジ日時 | 2025-04-19 02:06:53 |
合計ジャッジ時間 | 7,399 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 WA * 13 |
ソースコード
#include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<vector<pair<int, int>>> g(n); for (int i = 1; i < n; ++i) { int u, v, w; cin >> u >> v >> w; --u, --v; g[u].emplace_back(v, w); g[v].emplace_back(u, w); } vector<long long> dis1(n), dis2(n); auto bfs = [&](int s) -> vector<long long> { vector<long long> dis(n, 1e18); vector<int> check(n); check[s] = 1; queue<int> q; dis[s] = 0; for (q.push(s); !q.empty(); q.pop()) { auto now = q.front(); for (auto [to, c] : g[now]) { if (!check[to]) { dis[to] = dis[now] + c; check[to] = 1; q.push(to); } } } return dis; }; dis1 = bfs(0); int id1 = 0; for (int i = 0; i < n; ++i) { if (dis1[i] > dis1[id1]) { id1 = i; } } dis2 = bfs(id1); long long ans = 0; for (int i = 0; i < n; ++i) ans = max(ans, dis2[i]); cout << ans << endl; }