Submission #1207642

#TimeUsernameProblemLanguageResultExecution timeMemory
1207642madamadam3Duathlon (APIO18_duathlon)C++20
0 / 100
1108 ms1114112 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int const int MAXN = 100'001, MAXM = 200'001; int n, m; vector<int> adj[MAXN]; int sz[MAXN], tin[MAXN], low[MAXN], par[MAXN]; bool vis[MAXN]; int ways = 0; void dfs(int u, int p) { sz[u] = 1; par[u] = p; for (int v : adj[u]) { if (v == p) continue; dfs(v, u); sz[u] += sz[v]; } } void dfs2(int u, int p) { int contrib = 0; for (int v : adj[u]) { if (v == p) { // contrib += sz[u] * (n - sz[v]); ways -= (n - sz[u]) * (n - sz[u] - 1); continue; } dfs2(v, u); // contrib += sz[v] * (n - sz[v] - 1); ways -= sz[v] * (sz[v] - 1); } // ways += contrib; // cout << u << " contributes " << contrib << "\n"; } signed main() { cin >> n >> m; for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } if (n <= 2) { cout << 0; return 0; } ways = n * (n - 1) * (n - 2); dfs(1, 1); dfs2(1, 1); cout << ways; 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...