Submission #844811

#TimeUsernameProblemLanguageResultExecution timeMemory
844811irmuunDuathlon (APIO18_duathlon)C++17
23 / 100
992 ms1048576 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll n,m; cin>>n>>m; vector<ll>adj[n+1]; for(ll i=1;i<=m;i++){ ll u,v; cin>>u>>v; adj[u].pb(v); adj[v].pb(u); } ll ans=0; vector<ll>cnt(n+1,0); ll cur=0; function <void(ll,ll)> dfs=[&](ll x,ll p){ cnt[x]=1; vector<ll>v; for(ll y:adj[x]){ if(y!=p){ dfs(y,x); v.pb(cnt[y]); cnt[x]+=cnt[y]; } } v.pb(cur-cnt[x]); for(ll y:v){ ans+=(cur-1-y)*y; } }; function<void(ll,ll)> count=[&](ll x,ll p){ cur++; for(auto y:adj[x]){ if(y!=p){ count(y,x); } } }; for(ll i=1;i<=n;i++){ if(cnt[i]==0){ cur=0; count(i,-1); dfs(i,-1); } } cout<<ans; }
#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...