[CF1292C] Xenon's Attack on the Gangs
Posted darthvictor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CF1292C] Xenon's Attack on the Gangs相关的知识,希望对你有一定的参考价值。
前言
我水一次题解。我是真的真的真的没有时间了,昨晚高考课任务太多了,完全完成一道题就十点半了。这个看懂题意就贼费劲,在晚新闻之前真的没有时间写题了。水一次,真的就这一次,讲完之后一定补上。我谢罪!
题目
解说
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=3000+5; 5 int n,rt,p[maxn][maxn],s[maxn][maxn]; 6 ll f[maxn][maxn],ans; 7 vector<int> G[maxn]; 8 void Build(int u){ 9 s[rt][u]=1; 10 for(int v: G[u]) if(v^p[rt][u]){ 11 p[rt][v]=u; 12 Build(v); 13 s[rt][u]+=s[rt][v]; 14 } 15 } 16 ll dp(int u,int v){ 17 if(u==v) return 0; 18 if(f[u][v]) return f[u][v]; 19 return f[u][v]=max(dp(u,p[u][v]),dp(v,p[v][u]))+s[u][v]*s[v][u]; 20 } 21 int main(){ 22 scanf("%d",&n); 23 for(int i=1;i<n;i++){ 24 int x,y; 25 scanf("%d%d",&x,&y); 26 G[x].push_back(y); 27 G[y].push_back(x); 28 } 29 for(int i=1;i<=n;i++){ 30 rt=i; 31 Build(i); 32 } 33 for(int i=1;i<=n;i++){ 34 for(int j=1;j<=n;j++){ 35 ans=max(ans,dp(i,j)); 36 } 37 } 38 printf("%lld",ans); 39 return 0; 40 }
(C++ 11运行)
幸甚至哉,歌以咏志。
以上是关于[CF1292C] Xenon's Attack on the Gangs的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces 1292C Xenon's Attack on the Gangs
cf1293EE.Xenon's Attack on the Gangs(dp)
CF1293E-Xenon's Attack on the Gangs 树状DP
Codeforces Round #614 (Div. 2) E. Xenon's Attack on the Gangs
Codeforces Round #614 (Div. 2) E. Xenon's Attack on the Gangs