제출 #277097

#제출 시각아이디문제언어결과실행 시간메모리
277097tinjyu철인 이종 경기 (APIO18_duathlon)C++14
0 / 100
1121 ms1048580 KiB
#include <iostream> using namespace std; long long int son[1000005],ans,cnt,tmp[1000005],n,m,road[1000005],map[1000005][2]; void dfs(int x,int fa) { son[x]=1; long long int g=road[x]; while(g!=-1) { long long int now=map[g][0]; if(now!=fa) { dfs(now,x); son[x]+=son[now]; } g=map[g][1]; } return ; } void find(int x,int fa) { cnt=0; long long int g=road[x]; while(g!=-1) { long long int now=map[g][0]; if(now!=fa) { ans+=(n-son[now]-1)*son[now]; } g=map[g][1]; } ans+=(n-son[x])*(son[x]-1); g=road[x]; while(g!=-1) { long long int now=map[g][0]; if(now!=fa) { find(now,x); } g=map[g][1]; } return ; } int main(){ cin>>n>>m; if(n==m) { cout<<n*(n-1)*(n-2); return 0; } for(int i=1;i<=n;i++)road[i]=-1; for(int i=1;i<=m;i++) { int u,v; cin>>u>>v; map[i*2][0]=v; map[i*2][1]=road[u]; road[u]=i*2; map[i*2+1][0]=u; map[i*2+1][1]=road[v]; road[v]=i*2+1; } dfs(1,-1); find(1,-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...