結果
| 問題 | No.1098 LCAs |
| コンテスト | |
| ユーザー |
rokahikou1
|
| 提出日時 | 2020-08-12 01:20:39 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 518 ms / 2,000 ms |
| コード長 | 1,398 bytes |
| 記録 | |
| コンパイル時間 | 986 ms |
| コンパイル使用メモリ | 99,096 KB |
| 実行使用メモリ | 36,320 KB |
| 最終ジャッジ日時 | 2024-10-09 12:21:59 |
| 合計ジャッジ時間 | 8,898 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 |
ソースコード
#include <algorithm>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
#define rep(i, n) for(int(i) = 0; (i) < (n); (i)++)
#define FOR(i, m, n) for(int(i) = (m); (i) < (n); (i)++)
#define All(v) (v).begin(), (v).end()
#define pb push_back
#define MP(a, b) make_pair((a), (b))
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const int INF = 1 << 30;
const ll LINF = 1LL << 60;
const int MOD = 1e9 + 7;
using Graph = vector<vector<int>>;
int dfs(int v, int p, vector<ll> &dp, vector<ll> &par, Graph &G) {
int ret = 1;
par[v] = p;
for(auto nv : G[v]) {
if(nv == p)
continue;
ret += dfs(nv, v, dp, par, G);
}
return dp[v] = ret;
}
int main() {
int N;
cin >> N;
Graph G(N);
rep(i, N - 1) {
int v, w;
cin >> v >> w;
v--, w--;
G[v].pb(w);
G[w].pb(v);
}
vector<ll> childs(N), par(N);
dfs(0, -1, childs, par, G);
vector<ll> res(N);
rep(i, N) {
ll ans = childs[i] * childs[i];
for(auto nv : G[i]) {
if(nv != par[i])
ans -= childs[nv] * childs[nv];
}
res[i] = ans;
}
rep(i, N) { cout << res[i] << endl; }
return 0;
}
rokahikou1