Submission #439925

#TimeUsernameProblemLanguageResultExecution timeMemory
439925KULIKOLDDuathlon (APIO18_duathlon)C++17
0 / 100
117 ms21556 KiB
//#pragma GCC optimize ("O3") #include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' const int DIM = 1E5+7; const int INF = 1E9; vector<int> G[DIM]; int depth[DIM]; ll res = 0; int dfs(int v,int par){ depth[v] = depth[par]+1; vector<int> V; for(int to:G[v]){ if (depth[to]!=0 && depth[to]<depth[v]) { V.push_back(depth[to]); res+=(depth[v]-depth[to]-1); continue; } if (!depth[to]) dfs(to,v); } sort(V.begin(),V.end()); V.push_back(depth[v]-1); for(int i = int(V.size())-2;i>=0;--i){ res+=ll(V[i])*(V[i+1]-V[i]); } res+=ll(depth[v]-1)*(depth[v]-2)/2; return 1; } int solve(){ int n,m; cin>>n>>m; for(int i = 1;i<=m;++i){ ll u,v; cin>>u>>v; G[u].push_back(v); G[v].push_back(u); } for(int i = 1;i<=n;++i){ if (!depth[i]) dfs(i,i); } cout<<res*2<<endl; return 1; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); 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...