Submission #701522

#TimeUsernameProblemLanguageResultExecution timeMemory
701522Abrar_Al_SamitDuathlon (APIO18_duathlon)C++17
23 / 100
1082 ms1048576 KiB
#include<bits/stdc++.h> using namespace std; const int nax = 1e5 + 2; vector<int>g[nax]; int n, m; long long ans = 0; bool vis[nax]; int sub[nax]; int dfs1(int v, int p) { sub[v] = 1; vis[v] = 1; for(int u : g[v]) if(u!=p) { sub[v] += dfs1(u, v); } return sub[v]; } long long C(int n, int r) { if(n<r) return 0; long long ret = 1; for(int i=n-r+1; i<=n; ++i) { ret *= i; } for(int i=1; i<=r; ++i) { ret /= i; } return ret; } void dfs2(int v,int p, int r) { long long cur = C(sub[v]-1, 2); for(int u : g[v]) if(u!=p) { dfs2(u, v, r); cur -= C(sub[u], 2); } ans += cur; ans += (sub[v]-1) * 1LL * (sub[r] - sub[v]); } void PlayGround() { cin>>n>>m; for(int i=0; i<m; ++i) { int u, v; cin>>u>>v; g[u].push_back(v); g[v].push_back(u); } for(int i=1; i<=n; ++i) if(!vis[i]) { dfs1(i, i); dfs2(i, i, i); } cout<<ans*2<<'\n'; // cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); PlayGround(); 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...