제출 #698790

#제출 시각아이디문제언어결과실행 시간메모리
698790vjudge1철인 이종 경기 (APIO18_duathlon)C++17
0 / 100
1114 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl '\n' const int M = 3e5+5, K = 4e2+2, MOD = 1e9+7; int d[M], noc[M], n, dp[M]; vector<int> node[M]; void dfs(int s, int p = 1) { noc[s]++; for (int i:node[s]) { if (i != p) { d[i] = d[s]+1; dfs(i, s); noc[s] += noc[i]; } } } void dfs2(int s, int p = 1) { for (int i:node[s]) { if (i != p) { 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]; dfs2(1); int ans = 0; for (int i = 1; i <= n; i++) ans += dp[i] - n + 1; // for (int i = 1; i <= n; i++) cout << dp[i] << ' '; cout << endl; 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...