Submission #374600

#TimeUsernameProblemLanguageResultExecution timeMemory
374600moratoDuathlon (APIO18_duathlon)C++17
0 / 100
1151 ms1048580 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; long long ans; vector<int> adj[N]; int subtree[N], n; void dfs(int v, int p = 0) { subtree[v] = 1; for (int u : adj[v]) if (u != p) { dfs(u, v); subtree[v] += subtree[u]; } long long aux = (v == 1 ? 0ll : 1ll * (n - subtree[v])); vector<long long> pref; pref.push_back(aux); long long local_ans = 0; for (int u : adj[v]) if (u != p) { assert(!pref.empty()); local_ans += pref.back() * 1ll * subtree[u]; pref.push_back(pref.back() + 1ll * subtree[u]); } ans += 2ll * local_ans; } int main() { ios::sync_with_stdio(false); cin.tie(0); int m; cin >> n >> m; for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; adj[a].push_back(b); adj[b].push_back(a); } dfs(1); cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...