Submission #1298849

#TimeUsernameProblemLanguageResultExecution timeMemory
1298849altern23Duathlon (APIO18_duathlon)C++20
100 / 100
127 ms28572 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MAXN = 2e5+5; const int INF = 1e9; int N, M, scc[MAXN]; char C, D; vector <int> adj[MAXN], bct[MAXN]; ll t, group; int sz[MAXN], tin[MAXN], low[MAXN]; bool ap[MAXN]; stack <ll> stk; void dfs(ll idx, ll par) { stk.push(idx); low[idx] = tin[idx] = ++t; sz[idx] = 1; for (auto i : adj[idx]) { if (!tin[i]) { dfs(i, idx); low[idx] = min(low[idx], low[i]); if (low[i] >= tin[idx]) { group++; while (!stk.empty() && stk.top() != i) { bct[group].push_back(stk.top()); bct[stk.top()].push_back(group); sz[group] += sz[stk.top()]; stk.pop(); } bct[group].push_back(stk.top()); bct[stk.top()].push_back(group); sz[group] += sz[stk.top()]; stk.pop(); sz[idx] += sz[group]; bct[group].push_back(idx); bct[idx].push_back(group); } } else if (i != par) { low[idx] = min(low[idx], tin[i]); } } } int main () { ll N, M; cin >> N >> M; for (int i = 1; i <= M; i++) { ll u, v; cin >> u >> v; adj[u].push_back(v), adj[v].push_back(u); } group = N; ll ans = 0; for (int i = 1; i <= N; i++) { ll lst = group; if (!tin[i]) { dfs(i, -1); for (int j = lst + 1; j <= group; j++) { for (auto x : bct[j]) { if (sz[x] > sz[j]) { ans += ((ll)bct[j].size() - 1) * (sz[i] - sz[j]) * (sz[j] - 1); } else { ans += ((ll)bct[j].size() - 1) * sz[x] * (sz[i] - 1 - sz[x]); } } } } } cout << ans << "\n"; }
#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...