Submission #405467

#TimeUsernameProblemLanguageResultExecution timeMemory
405467salehDuathlon (APIO18_duathlon)C++17
23 / 100
1111 ms1048580 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int MAXN = 100 * 1000 + 23; int n, m, sz[MAXN], save, ans; vector<int> g[MAXN]; bitset<MAXN> mark; int ent(int x) { return x * (x - 1); } int gs(int v, int p) { mark[v] = true; for (auto i : g[v]) if (i != p) sz[v] += gs(i, v); return ++sz[v]; } void dfs(int v, int p) { for (auto i : g[v]) if (i != p) dfs(i, v); for (auto i : g[v]) if (i != p) ans -= ent(save - sz[i]); if (~p) ans -= ent(sz[v]); } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); cin >> n >> m; for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; g[--u].push_back(--v), g[v].push_back(u); } for (int i = 0; i < n; i++) if (!mark[i]) { save = gs(i, -1); ans += save * (save - 1) * (save - 2); dfs(i, -1); } cout << ans; 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...