Submission #1013954

#TimeUsernameProblemLanguageResultExecution timeMemory
1013954pccDuathlon (APIO18_duathlon)C++17
10 / 100
1057 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int mxn = 1e5+10; vector<int> tree[mxn]; int N,M; bitset<mxn> vis; int dp[mxn]; ll ans = 0; void dfs1(int now,int fa){ dp[now] = 1; for(auto nxt:tree[now]){ if(nxt == fa)continue; dfs1(nxt,now); dp[now] += dp[nxt]; } return; } void dfs2(int now,int fa,int sz){ ll sum = 0; for(auto nxt:tree[now]){ if(nxt == fa)continue; ans += sum*dp[nxt]*2; sum += dp[nxt]; } ll ts = sz-dp[now]; ans += sum*ts*2; return; } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>N>>M; for(int i = 0;i<M;i++){ int a,b; cin>>a>>b; tree[a].push_back(b); tree[b].push_back(a); } for(int i = 1;i<=N;i++){ if(vis[i])continue; dfs1(i,i); dfs2(i,i,dp[i]); } cout<<ans<<'\n'; 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...