제출 #265419

#제출 시각아이디문제언어결과실행 시간메모리
265419DS007철인 이종 경기 (APIO18_duathlon)C++14
10 / 100
1121 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e5, M = 2e5; vector<int> adj[N]; bool explored[N]; int n, m, dp[N][3], ans; void dfs(int v, int p = -1) { //cerr << v << endl; explored[v] = true; int s1 = 0, s2 = 0; dp[v][0] = 1; for (int i : adj[v]) { if (i != p){ dfs(i, v); dp[v][0] += dp[i][0]; dp[v][1] += dp[i][0] + dp[i][1]; dp[v][2] += dp[i][1] * 2; s2 += dp[i][1]; s1 += dp[i][0]; } } for (int i : adj[v]) { if (i != p) { s2 -= dp[i][1]; s1 -= dp[i][0]; dp[v][2] += s2 * dp[i][0] * 2; dp[v][2] += s1 * dp[i][0]; s2 += dp[i][1]; s1 += dp[i][0]; } } ans += dp[v][2]; } int solveTestCase() { cin >> n >> m; for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; u--, v--; adj[u].push_back(v); adj[v].push_back(u); } for (int i = 0; i < n; i++) { if (!explored[i]) dfs(i); cerr << dp[i][0] << " " << dp[i][1] << " " << dp[i][2] << endl; } cout << ans; return 0; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; //cin >> t; while (t--) solveTestCase(); }
#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...