Submission #1160949

#TimeUsernameProblemLanguageResultExecution timeMemory
1160949not_amirDuathlon (APIO18_duathlon)C++20
0 / 100
55 ms25412 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; vector<int> depth, w; vector<bool> visited, is_root; vector<vector<int>> child, nchild; int dfsc(int v, int r) { int cnt = 1; for (int u : child[v]) { if (is_root[u]) nchild[r].push_back(u); else cnt += dfsc(u, r); } return cnt; } int dfs1(int v, int p, vector<vector<int>> &G, int d = 0) { visited[v] = true; depth[v] = d; int low = d; for (int u : G[v]) { if (visited[u]) { if (u != p) low = min(low, depth[u]); continue; } child[v].push_back(u); int curr = dfs1(u, v, G, d + 1); if (curr > d) { w[u] = dfsc(u, u); is_root[u] = true; } low = min(low, curr); } return low; } ll ans = 0; ll dfs2(int v, int n) { ll siz = w[v]; for (int u : nchild[v]) { ll curr = dfs2(u, n); ans += (siz - w[v]) * curr * w[v]; siz += curr; } ans += (n - siz) * (siz - w[v]) * w[v]; return siz; } int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, m; cin >> n >> m; vector<vector<int>> G(n + 1); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; G[u].push_back(v); G[v].push_back(u); } visited.resize(n + 1); depth.resize(n + 1); child.resize(n + 1); nchild.resize(n + 1); w.resize(n + 1); is_root.resize(n + 1); for (int i = 1; i <= n; i++) { if (visited[i]) continue; dfs1(i, 0, G); w[i] = dfsc(i, i); dfs2(i, n); } cout << 2 * ans << '\n'; } /* 7 6 1 2 2 3 2 4 2 5 5 6 5 7 */
#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...