| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1351774 | nguyenkhangninh99 | Duathlon (APIO18_duathlon) | C++20 | 71 ms | 32752 KiB |
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 4e5 + 5;
vector<int> adj[maxn];
int num[maxn], low[maxn], timedfs = 0;
stack<int> st;
vector<int> bct[maxn];
int sz[maxn], w[maxn], id;
void tarjan(int u, int p){
num[u] = low[u] = ++timedfs;
st.push(u);
for(int v: adj[u]){
if(v == p) continue;
if(!num[v]){
tarjan(v, u);
low[u] = min(low[u], low[v]);
if(low[v] >= num[u]){
id++;
while(true){
int x = st.top(); st.pop();
bct[id].push_back(x);
bct[x].push_back(id);
w[id]++;
if(x == v) break;
}
bct[id].push_back(u);
bct[u].push_back(id);
w[id]++;
}
} else low[u] = min(low[u], num[v]);
}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, m; cin >> n >> m;
for(int i = 1; i <= m; i++){
int u, v; cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
id = n;
int cnt = 0, ans = 0;
function<void(int, int)> dfs = [&](int u, int p){
sz[u] = (u <= n);
cnt += sz[u];
for(int v: bct[u]){
if(v == p) continue;
dfs(v, u);
sz[u] += sz[v];
}
};
function<void(int, int)> calc = [&](int u, int p){
int cur = cnt * (cnt - 1) - (cnt - sz[u]) * (cnt - sz[u] - 1);
for(int v : bct[u]){
if(v == p) continue;
cur -= sz[v] * (sz[v] - 1);
calc(v, u);
}
ans += cur * (u <= n ? -1 : w[u]);
};
for(int i = 1; i <= n; i++){
if(!num[i]){
cnt = 0;
tarjan(i, 0);
dfs(i, 0);
calc(i, 0);
}
}
cout << ans;
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
