結果
| 問題 | No.1098 LCAs |
| コンテスト | |
| ユーザー |
zjsdut
|
| 提出日時 | 2026-06-23 22:20:32 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 102 ms / 2,000 ms |
| コード長 | 877 bytes |
| 記録 | |
| コンパイル時間 | 2,582 ms |
| コンパイル使用メモリ | 332,476 KB |
| 実行使用メモリ | 31,488 KB |
| 最終ジャッジ日時 | 2026-06-23 22:20:39 |
| 合計ジャッジ時間 | 6,586 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 |
ソースコード
/**
* author: zjs
* created: 23.06.2026 21:15:33
**/
#include <bits/stdc++.h>
#include <cassert> // <bits/stdc++.h> does not include cassert since GCC 16.
using namespace std;
#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif
const int maxn = 2e5 + 5;
vector<int> g[maxn];
int sz[maxn];
long long ans[maxn];
void dfs(int u, int p) {
sz[u] = 1;
for (int v : g[u])
if (v != p) {
dfs(v, u);
sz[u] += sz[v];
ans[u] -= (long long) sz[v] * sz[v];
}
ans[u] += (long long) sz[u] * sz[u];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1, 0);
for (int i = 1; i <= n; i++)
cout << ans[i] << '\n';
}
zjsdut