Submission #771794

#TimeUsernameProblemLanguageResultExecution timeMemory
771794gagik_2007Duathlon (APIO18_duathlon)C++17
8 / 100
105 ms15360 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; ll ttt; const ll INF=1e18; const ll MOD=1e9+7; const ll N=3e5+7; ll n,m,k; vector<int>g[N]; bool used[N]; bool cu[N]; bool is_cycle(int v, int par){ if(used[v])return true; used[v]=true; for(int to:g[v]){ if(to!=par){ if(is_cycle(to, v))return true; } } return false; } int length(int v){ cu[v]=true; int cnt=1; for(int to:g[v]){ if(!cu[to]){ cnt+=length(to); } } return cnt; } int main() { cin>>n>>m; for(int i=0;i<m;i++){ int x,y; cin>>x>>y; g[x].push_back(y); g[y].push_back(x); } ll ans=0; for(int v=0;v<n;v++){ if(!used[v]){ ll cnt=length(v); if(is_cycle(v, v)){ ans+=cnt*(cnt-1)*(cnt-2); } else{ ans+=cnt*(cnt-1)*(cnt-2)/3; } } } cout<<ans<<endl; }
#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...