Submission #568737

#TimeUsernameProblemLanguageResultExecution timeMemory
568737inluminasDuathlon (APIO18_duathlon)C++17
23 / 100
1102 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 ll lmt=2e5+10; vector<ll>adj[lmt]; bool vis[lmt]; ll c[lmt],par[lmt],sz[lmt]; ll ans=0; map<pair<ll,ll>,ll>z; ll findpar(ll p){ if(par[p]==p) return p; return par[p]=findpar(par[p]); } void merge(ll u,ll v){ u=findpar(u),v=findpar(v); par[u]=v; sz[v]+=sz[u]; return; } void dfs(ll u,ll p){ c[u]=vis[u]=1; ll pu=findpar(u); for(ll 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; ll n,m; cin>>n>>m; for(ll i=1;i<=n;i++){ par[i]=i,sz[i]=1; } for(ll i=1;i<=m;i++){ ll u,v; cin>>u>>v; merge(u,v); adj[u].push_back(v); adj[v].push_back(u); } for(ll i=1;i<=n;i++){ if(vis[i]) continue; dfs(i,0); } for(ll i=1;i<=n;i++){ ll p=findpar(i); for(ll v:adj[i]){ ll 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...