题目链接:UVALive 6436 The Busiest City

题意:给你从1到n总共n个数字,同时给你n-1个连接,同时保证任意两个点之间都可以连接。现在假设任意两个点简单连通路过某点则某点的繁荣度+1,求所有点的最大繁荣度。

题解:首先我们可以知道,任意两个点之间连接,且只有n-1个连接,可以得到没有环形结构。再其次,我们可以明白任意一个点的繁荣度是以它为根的所有子树的乘积。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int inf=1123456789;
const int maxn=123456;
vector<int>s[20100];
int zs[20100];
int ans,n;
void dfs(int now,int pre)
{int res = 0;int len = s[now].size();zs[now]=1;int ne;for (int i = 0;i < len;i++){ne = s[now][i];if (ne == pre)continue;dfs(ne,now);res += (zs[ne]*(n-1-zs[ne]));zs[now]+=zs[ne];}res += (n - zs[now])*(zs[now] - 1);if (res>ans)ans = res;
}
int main()
{int t;scanf("%d",&t);for (int tt=1;tt<=t;tt++){for (int i = 1;i <= 20100;i++)s[i].clear();scanf("%d",&n);int a,b;for (int nn = 1;nn < n;nn++){scanf("%d %d",&a,&b);s[a].push_back(b);s[b].push_back(a);}ans = 0;dfs(1,0);printf("Case #%d: %d\n",tt,ans/2);}return 0;
}

算法分析,首先zs数组是用来存节点的个数的,我们明确因为没有环所以必然能找到树叶,当找到树叶的时候即该点出现了,所以该点的节点数记为1。现在考虑两个函数的意义

 res += (zs[ne]*(n-1-zs[ne]));

这个函数的意思是该点dfs过后计算繁荣度,即以now为节点,以ne为下一节点的情况下的now的繁荣度计算。

res += (n - zs[now])*(zs[now] - 1);

这个函数的意思则是在遍历过当前节点的后续节点后,以zs[now]的节点数计算繁荣度。

由于这两个函数求的部分是有重复的,第一个函数算出来的结果实际上是含有冗余项,为了出去冗余的部分一种方式是将冗余部分找出来删去,另一种因为只会冗余其中一部分情况一次只需我们补全不冗余的数量即可,最终求出来的是实际结果的2倍。

UVALive 6436 The Busiest City相关推荐

  1. UVALive - 6436

    题目链接:https://vjudge.net/contest/241341#problem/C Tree Land Kingdom is a prosperous and lively kingdo ...

  2. 计算机如何理解我们的语言?NLP is fun!

    作者 | Adam Geitgey 译者 | 婉清 编辑 | Jane 出品 | AI科技大本营 [导读]我们从日常每天都会用到的推荐系统到现在研究火热的开放性聊天.对话机器人,越来越多的产品与应用的 ...

  3. [译] 自然语言处理真是有趣!

    原文地址:Natural Language Processing is Fun! 原文作者:Adam Geitgey 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m ...

  4. 【UVALive】3029 City Game(悬线法)

    题目 传送门:QWQ 分析 以前见到过差不多的这题. xhk说是单调栈水题,但我又不会单调栈,于是当时就放下了. 这么久过去了我还是不会用单调栈做这题,用的是悬线法. 非常好写 代码 #include ...

  5. DP UVALive 6506 Padovan Sequence

    题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...

  6. ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景

    ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景 ue4商城素材 Cyberpunk City / Recife Environment 赛博朋 ...

  7. 多尺度的CityNeRF: Building NeRF at City Scale

    作者丨黄浴@知乎 来源丨https://zhuanlan.zhihu.com/p/450671684 编辑丨3D视觉工坊 arXiv在2021年12月17日上传论文"CityNeRF: Bu ...

  8. 车辆计数--FCN-rLSTM: Deep Spatio-Temporal Neural Networks for Vehicle Counting in City Cameras

    FCN-rLSTM: Deep Spatio-Temporal Neural Networks for Vehicle Counting in City Cameras ICCV2017 https: ...

  9. 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序

    [题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...

  10. Bitcoin.com| 使用加密的三大驱动因素​——BCH City总结

    随着澳大利亚汤斯维尔的会议和相关后续活动的全部结束,参与者们回家重新投入工作中. ​​ 随着澳大利亚汤斯维尔的会议和相关后续活动的全部结束,参与者们回家后重新投入工作中.因此,我们将从整体上审视本次会 ...

最新文章

  1. 沈向、洋周明:神经自然语言处理进展综述:建模,学习,推理
  2. java怎么获取文本里的值_怎么获取到text中的文本,或者title中的值
  3. python接口测试demo_python http接口自动化测试简单demo
  4. 鸟哥的linux私房菜有乌班图,折腾Ubuntu的一些summary--初装Ubuntu18和重装Ubuntu18
  5. Java BigInteger类| isProbablePrime()方法与示例
  6. linux打开文件int open,Linux下C语言open函数打开或创建文件与read,write函数详细讲解...
  7. 设置DBGridEH自适应列宽的最好方法
  8. HISI3536安装交叉编译工具链
  9. JavaWeb之JSP技术总结
  10. SQL优化工具SQLAdvisor使用
  11. 固高运动控制卡学习8 --高速硬件捕获
  12. 基于交比不变性的太阳定位算法的研究
  13. win10 JDK的安装及环境变量的配置
  14. DHCP服务的八种报文(消息)作用
  15. 小米路由的IPv6支持教程(纯转保存)
  16. Pod状态异常排查问题集-pending状态排查思路
  17. 全网最完整php禁用eval函数讲解
  18. SONET/SDH帧格式
  19. 学习KeyShot 3D 动画要点
  20. 小学生C++趣味编程 上机作业 每日一练 第1单元 顺序结构

热门文章

  1. Java实现网络通信(TCP程序设计)
  2. css基础-属性值计算过程
  3. 大数据查询引擎 PrestoDB
  4. ANN to SNN
  5. 最全电商分类信息(03)
  6. html5自动淡入淡出图片,利用html5实现图片的淡入淡出效果
  7. java共享充电宝管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  8. html网页制作,前端三剑客一
  9. MP-SPDZ开源库——将结果输出到文件
  10. 未来计算机作文600字,未来的电脑作文600字(精选3篇)