Submission #568732

#TimeUsernameProblemLanguageResultExecution timeMemory
568732inluminasDuathlon (APIO18_duathlon)C++17
10 / 100
1051 ms1048576 KiB
#include"bits/stdc++.h" using namespace std; #define ll long long #define endl "\n" #define fastio ios_base::sync_with_stdio(false) #define inf LLONG_MAX #define l first #define r second const int lmt=1e5+10; vector<int>adj[lmt]; bool vis[lmt]; int c[lmt],par[lmt],sz[lmt]; ll ans=0; map<pair<int,int>,int>z; int findpar(int p){ if(par[p]==p) return p; return par[p]=findpar(par[p]); } void merge(int u,int v){ u=findpar(u),v=findpar(v); par[u]=v; sz[v]+=sz[u]; return; } void dfs(int u,int p){ c[u]=vis[u]=1; int pu=findpar(u); for(int v:adj[u]){ if(v==p) continue; dfs(v,u); c[u]+=c[v]; z[{u,v}]=c[v]; z[{v,u}]=sz[pu]-c[v]; } } int main(){ fastio; int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ par[i]=i,sz[i]=1; } for(int i=1;i<=m;i++){ int u,v; cin>>u>>v; merge(u,v); adj[u].push_back(v); adj[v].push_back(u); } for(int i=1;i<=n;i++){ if(vis[i]) continue; dfs(i,0); } for(int i=1;i<=n;i++){ int p=findpar(i); for(int v:adj[i]){ int val=z[{i,v}]; ans+=(val*(sz[p]-val-1)); } } cout<<ans<<endl; 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...