| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1362044 | erering | Duathlon (APIO18_duathlon) | C++20 | 44 ms | 13676 KiB |
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pb push_back
const int N=1e5+5,MAXA=1e6+5,inf=2e9+5,MOD=982451653;
vector<int> adj[N];
int low[N],depth[N],C,sz[N],ans=0,n;
bool cycle=0;
void dfs(int node,int par){
depth[node]=depth[par]+1;
sz[node]=1;
for(auto i:adj[node]){
if(i==par)continue;
if(!depth[i]){
dfs(i,node);
sz[node]+=sz[i];
}
else cycle=1;
}
}
void dfs2(int node){
int sum=0;
for(auto i:adj[node]){
if(depth[i]==depth[node]+1){
dfs2(i);
ans+=sum*sz[i]*2;
sum+=sz[i];
}
}
ans+=(sz[node]-1)*(sz[C]-sz[node])*2;
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int m; cin>>n>>m;
for(int i=0;i<m;i++){
int x,y; cin>>x>>y;
adj[x].pb(y); adj[y].pb(x);
}
for(int i=1;i<=n;i++){
if(!depth[i]){
C=i; cycle=0;
dfs(i,0);
if(cycle)ans+=sz[C]*(sz[C]-1)*(sz[C]-2);
else dfs2(i);
}
}
cout<<ans;
}| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
