| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1353549 | DanerZein | Duathlon (APIO18_duathlon) | C++20 | 1116 ms | 1114112 KiB |
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef long long ll;
const int MAX_N=1e5+10;
vector<vi> G;
ll sub[MAX_N];
int pa[MAX_N],ro[MAX_N];
int n;
ll res=0;
void dfs(int u,int p,int root){
sub[u]=1;
pa[u]=p;
ro[u]=root;
for(auto &v:G[u]){
if(v!=p){
dfs(v,u,root);
sub[u]+=sub[v];
}
}
}
int main(){
int m; cin>>n>>m;
G.resize(n);
for(int i=0;i<m;i++){
int a,b; cin>>a>>b;
a--; b--;
G[a].push_back(b);
G[b].push_back(a);
}
for(int i=0;i<n;i++)
if(sub[i]==0)
dfs(i,i,i);
for(int i=0;i<n;i++){
for(auto &v:G[i]){
if(v!=pa[i]){
res+=sub[v]*(sub[i]-sub[v]-1);
res+=2LL*sub[v]*(sub[ro[i]]-sub[i]);
}
}
}
cout<<res<<endl;
}
| # | 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... | ||||
