Submission #120725

#TimeUsernameProblemLanguageResultExecution timeMemory
120725_demon_Duathlon (APIO18_duathlon)C++14
23 / 100
1148 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll n,m; ll child[100009]; ll ans; ll w[100009]; vector<ll>v[100009]; int done[100009]; int comp[100009]; int mp[1000009]; int crnt=0; void dfs1(int node,int p){ child[node]=1; done[node]=1; comp[node]=crnt; mp[crnt]++; if(node!=p)w[node]=w[p]+1; for(int i=0;i<v[node].size();i++){ int u=v[node][i]; if(u==p)continue; dfs1(u,node); child[node]+=child[u]; } } int a[100009]; void dfs2(int node,int p){ done[node]=1; ll sum=0; for(int i=0;i<v[node].size();i++){ int u=v[node][i]; if(w[u]>w[node]){ sum+=child[u]*(mp[comp[node]]-child[u]-1); } else{ sum+=(mp[comp[node]]-child[node])*(child[node]-1); } } a[node]=sum; ans+=sum; for(int i=0;i<v[node].size();i++){ int u=v[node][i]; if(u==p)continue; dfs2(u,node); } } int main(){ cin>>n>>m; for(int i=0;i<m;i++){ int a,b; cin>>a>>b; a--;b--; v[a].push_back(b); v[b].push_back(a); } for(int i=0;i<n;i++){ if(done[i]==0){ dfs1(i,i); crnt++; } } memset(done,0,sizeof(done)); for(int i=0;i<n;i++){ if(done[i]==0){ dfs2(i,i); } } /* for(int i=0;i<n;i++){ cout<<a[i]<<" "; } cout<<endl;*/ cout<<ans<<endl; }

Compilation message (stderr)

count_triplets.cpp: In function 'void dfs1(int, int)':
count_triplets.cpp:19:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<v[node].size();i++){
                     ~^~~~~~~~~~~~~~~
count_triplets.cpp: In function 'void dfs2(int, int)':
count_triplets.cpp:30:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<v[node].size();i++){
                     ~^~~~~~~~~~~~~~~
count_triplets.cpp:41:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<v[node].size();i++){
                     ~^~~~~~~~~~~~~~~
#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...