Submission #698798

#TimeUsernameProblemLanguageResultExecution timeMemory
698798vjudge1Duathlon (APIO18_duathlon)C++17
0 / 100
85 ms19812 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl '\n' const int M = 3e5+5, MOD = 1e9+7; int d[M], noc[M], n, dp[M], vis[M]; vector<int> node[M]; void dfs(int s, int p = 1) { noc[s]++; vis[s] = true; for (int i:node[s]) { if (!vis[i]) { d[i] = d[s]+1; dfs(i, s); noc[s] += noc[i]; } } } void dfs2(int s, int p = 1) { vis[s] = true; for (int i:node[s]) { if (!vis[i]) { dp[i] = dp[s] + n - 2*noc[i]; dfs2(i, s); } } } signed main() { cin.tie(0)->sync_with_stdio(0); int m; cin >> n >> m; for (int i = 1; i <= m; i++) { int a, b; cin >> a >> b; node[a].push_back(b); node[b].push_back(a); } dfs(1); for (int i = 1; i <= n; i++) dp[1] += d[i], vis[i] = 0; dfs2(1); int ans = 0; for (int i = 1; i <= n; i++) ans += dp[i] - n + 1; cout << ans << endl; return 0; } /* 4 3 1 2 2 3 3 4 */
#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...