题意:给出一颗树,现在,给哪些距离为2的点对,加上一条边,问所有点对的距离和

题解:如果没有加入新的边,距离和就会等于每条边的贡献,由于是树,我们用点来代表点上面的边,对于每条边,它的贡献将是(子树大小)*(n-子树大小)

而这题加上了新边,我们依然这样算贡献,跨越旧边的次数,依然是(子树大小)*(n-子树大小),只不过都是两个两个的走,那么虽然跨越了这条边,但是它可能走的是新边,也就是他的贡献要除以2,对于那些真正跨越了旧边的点对,它其实不需要除2的,所以我们要把它加上,这些点对的数量是(奇数层点数*偶数层点数)

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=2e5+10;
ll f[maxn],nex[2*maxn],to[2*maxn],cnt=0,vis[maxn],siz[maxn],num[3];
void add(int a,int b)
{cnt++;to[cnt]=b;nex[cnt]=f[a];f[a]=cnt;
}
int dfs(int x,int le)
{siz[x]=1;vis[x]=1;num[le%2]++;for(int i=f[x];i;i=nex[i]){int v=to[i];if(vis[v]==0){dfs(v,le+1);siz[x]+=siz[v];}}return siz[x];
}
int main()
{int n;cin>>n;for(int i=1;i<=n-1;i++){int a,b;scanf("%d %d",&a,&b);add(a,b);add(b,a);}dfs(1,1);ll ans=0;for(int i=1;i<=n;i++){ans+=siz[i]*(n-siz[i]);}ans+=num[0]*num[1];cout<<ans/2<<endl;return 0;
}

依然看不懂请参考:https://blog.csdn.net/qq_37555704/article/details/82948958?utm_source=blogxgwz2

转载于:https://www.cnblogs.com/carcar/p/9812461.html

1060E Sergey and Subway(思维题,dfs)相关推荐

  1. E. Sergey and Subway(思维 + dp)

    Problem - E - Codeforces Sergey Semyonovich 是 N 市县的市长,他一直在思考如何进一步改善 Nkers 的生活.不幸的是,几乎所有可以做的事情都已经完成了, ...

  2. Wannafly挑战赛29 A御坂美琴(思维题+dfs)

    题意: 一开始有n个糖果,每一次操作,你可以选择一堆x将其分成两堆,x//2,x-x//2 直到一堆的糖果数量=1就不能进行操作了. 然后现在给你m堆糖果a[1..m],问你能不从n个通过任意操作变成 ...

  3. ☆【CodeForces - 764C】Timofey and a tree (思维题,树的性质)

    题干: Each New Year Timofey and his friends cut down a tree of n vertices and bring it home. After tha ...

  4. CSP难度的经典题目/有趣的思维题选讲(一)

    引言 这里讲到的难题是一部分非常典型的题目,但并不是所有.因此这并非是一个全面的知识列表,而只适合提高组同学用来提升能力和拓展视野. 这篇文章在很多地方讲述的不够详细和严谨,因为它的作用并非是题解,而 ...

  5. codeforces 有意思的思维题 1 ~ 15

    codeforces 思维题 1.给定数组,求满足i < j and ai * aj = i + j的数对数量 2.第 i 步向前跳 i 步或后退 1 步 3.给两个点,求正方形的另两个点 4. ...

  6. I.Gree的心房(思维题)

    一开始我读到这道题以为要用dfs结果,读完之后发现好像就是一个思维题: 分析: 首先应该知道因为题目说了,一个人只能走四个方向(up,down,left,right):所以从左上角到右下角,那么就是都 ...

  7. CF1060E Sergey and Subway

    CF1060E Sergey and Subway 树上计数dp,考虑每条边的贡献,树上两点距离用深度与LCA表示 长度为2的两点间可以连一条边,所以对于任意两点 i , j i,j i,j, d i ...

  8. little w and Soda(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  10. yoyo思维题(困难) 组合数学

    问题 B: yoyo思维题(困难) 时间限制: 1 Sec  内存限制: 256 MB 提交: 11  解决: 3 [提交][状态][讨论版][命题人:qianyouyou][Edit] [TestD ...

最新文章

  1. SQL Server 查看表定义的 2 种方法
  2. 用py2exe打包成一个exe文件
  3. nodejs_NodeJS历险记
  4. android Module之间数据传递
  5. swift 原生给h5发消息_Swift - 使用HTML5进行iOS开发(将HTML5打包成iOS应用)
  6. python find方法的复杂度_python内置的方法的时间复杂度
  7. 华为蕊片鸿蒙OS尺寸,华为P50真机曝光:麒麟芯片、鸿蒙OS确定,双孔再见!
  8. linux下安装mysql5.7方法与常见问题
  9. 垃圾分类逼疯上海人 微信官方终于出手!
  10. 响应式Web设计的9项基本原则
  11. redis缓存穿透,缓存击穿,缓存雪崩原因和解决方案
  12. Atitit 学习的本质 团队管理与培训的本质 attilax总结 v2
  13. 谭浩强c语言程序设计 在线,C语言程序设计_谭浩强.pdf
  14. 计算机专业英语缩略词
  15. CentOS7 U盘安装操作系统卡在Reached target Basic System.
  16. 多看系统kindle最新版_谁说电气造价难?这样系统梳理一下简单多了!小白必看...
  17. 关于XD卡写保护问题!
  18. ics-07—CTF
  19. 免费拥有个人云主机——AWS免费EC2套餐内容
  20. Android github上优秀开源项目分类汇总

热门文章

  1. 华工网络教育C语言校考答案,华工网络教育高级语言程序设计C随堂练习附答案.pdf-资源下载在线文库www.lddoc.cn...
  2. word 支持html代码,Word怎么支持html代码
  3. 基础算法复习篇(一)——插入排序算法
  4. 《第七天》之第七天定格的群像——他们就是历史
  5. 「喜报」亚洲诚信TrustAsia成功入选上海市专利工作试点企业!
  6. 项目经理的跨部门沟通之道
  7. java 单列集合List 万字详解(通俗易懂)
  8. Cesium|xt3d 自定义html标注(含编辑)
  9. 靠高科技加持的智能玻璃温室番茄,凭什么做到每平米产量70公斤
  10. 快看.改变你人生的时刻到来。