【dfs】【树】机器选择

机器选择

题目大意:

有一个树状的图,要求安一个点,使这个点到最远的点的距离最小

原题:

题目描述

自从省队NOI赛前集训在scz举行之后,一个名叫cs1.6.exe的文件开始在机房广泛使用起来。每天大家都要找神犇小X借移动硬盘,考里面的这个文件。
由于机房里需要考这个文件的人太多了,每天都要花一段时间一个人一个人的去拷贝。小T觉得这实在是太麻烦了,就想找一个一劳永逸的方法。
小T调查了一下,机房有n台机器,且有局域网,所有机器通过一些网线连接起来,其整个布局是一个树形结构,即任意两台机器间都有且仅有一条路径。小T想在其中某一台机器上储存这个文件,需要的同学就可以直接通过局域网来下载这个文件。
网络上信息传输是需要时间的,我们定义两台机器间数据传输的时间为连接这两台机器的路径所包含的网线数量。虽然机房里通过局域网传个文件是很快的,但对于急不可耐的同学们来说,一分一秒都是宝贵的,文件传输越快越好。所以小T要选择一台机器存储文件,使得所有机器下载这个文件需要的总时间(即最后一台机器完成下载的时间)尽可能短。
现在,你需要给出这个最短时间,以便让小T看看他的决策是否最优。

输入

第1行:一个整数n。
第2n行:两个整数u、v,即u、v两台机器间有一条网线连接。机器从1n编号。
输入数据保证是一个连通的树型结构。

输出

1行一个整数,即最短的时间。

输入样例

5
3 2
2 1
5 2
2 4

输出样例

1

说明

【数据范围】

对于30%的数据,n≤100;
对于50%的数据,n≤1000;
对于100%的数据,2≤n≤100000。

解题思路:

直接暴力搜可以拿50分
想要拿100分就要先求出这棵树的直径,然后除以2就可以了

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int n,m,x,y,w,k,ans,p[100005],head[100005];
struct rec
{int to,next;
}a[200005];
void dfs(int dep,int s)
{p[dep]=1;//记录if (s>ans) ans=s,k=dep;//代替for (int i=head[dep];i;i=a[i].next)if (!p[a[i].to]) dfs(a[i].to,s+1);//搜下去p[dep]=0;
}
int main()
{int size = 256 << 20;char*p=(char*)malloc(size) + size;__asm__("movl %0, %%esp\n" :: "r"(p) );//开栈scanf("%d",&n);for (int i=1;i<n;++i){scanf("%d %d",&x,&y);a[++w].to=y;//存线路a[w].next=head[x];head[x]=w;a[++w].to=x;a[w].next=head[y];head[y]=w;}dfs(1,0);ans=0;dfs(k,0);//求直径printf("%d",(ans+1)/2);//除以2(加1是因为他是由0开始的)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACM-ICPC中博弈论的一些小小总结

博弈论 参考 [1]https://blog.csdn.net/clover_hxy/article/details/53818624 [2]https://blog.csdn.net/foreyes_1001/article/details/82862324 [3]https://www.cnblogs.com/lxm940130740/p/3268803.html 一.尼姆博弈 问题提出 下面给出Nim游戏的三种变体 现有nnn堆石子,每…

P3312-[SDOI2014]数表【莫比乌斯反演,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P3312 题目大意 定义F(x)F(x)F(x)表示xxx的约数和 给出n,m,an,m,an,m,a&#xff0c;求∑i1n∑j1m[F(gcd(i,j))≤a]∗F(gcd(i,j))\sum_{i1}^n\sum_{j1}^m[F(gcd(i,j))\leq a]*F(gcd(i,j))i1∑n​j1∑m​[F(gcd(i,j))≤a]∗F(g…

使用 IIS 在 Windows 上托管 ASP.NET Core2.0

准备&#xff1a;操作系统&#xff1a;Windows Server 2008 R2 或更高版本开发环境&#xff1a;VS2017回到顶部第一步&#xff1a;新建项目ASP.NET Core Web应用程序在 Visual Studio 中&#xff0c;选择“文件”>“新建”>“项目”。在新建项目对话框的左侧窗格选择“.N…

数学推导题,NTT,快速数论变换,Wannafly-导数卷积

导数卷积 题目描述 题解 参考了一下标程的推导过程,因为这个推导对我这种数学弱渣真的有点难鸭. [1]f(x)f(x)f(x)的iii次导函数: f(i)(x)ai∗i!0!ai1∗(i1)!1!∗x1...an−1∗(n−1)!(n−1−i)!∗xn−1−if^{(i)}(x) a_{i}*\frac{i!}{0!} a_{i1}*\frac{(i1)!}{1!}*x^{1} ...…

初一级练习题(2019.3.8)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111hkyhkyhky250250250100100100100100100505050000222lyflyflyf240240240100100100505050505050404040333wjjwjjwjj210210210909090707070505050000555lthlthlth12012012020202050505050505…

使用 C# 代码实现拓扑排序

0.参考资料尊重他人的劳动成果&#xff0c;贴上参考的资料地址&#xff0c;本文仅作学习记录之用。https://www.codeproject.com/Articles/869059/Topological-sorting-in-Csharphttps://songlee24.github.io/2015/05/07/topological-sorting/https://www.cnblogs.com/skywang1…

P3327-[SDOI2015]约数个数和【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P3327 题目大意 TTT组询问给出n,mn,mn,m&#xff0c;d(x)d(x)d(x)表示xxx的约数个数&#xff0c;求∑i1n∑j1md(i∗j)\sum_{i1}^n\sum_{j1}^md(i*j)i1∑n​j1∑m​d(i∗j) 解题思路 对于iii和jjj的两个约数a,ba,ba,b如果他们…

数学推导题,NTT,快速数论变换,Wannafly-乒乓球

乒乓球 题目描述 小 BoBoBo 是某省乒乓球名列前茅的选手&#xff0c;现在他有 nnn 颗乒乓球一字排开&#xff0c;第iii颗乒乓球的权值为 wiw_iwi​ 每次他会随机从现有的乒乓球中等概率选一颗拿走&#xff0c;然后得到的收益是这颗球左边第一个乒乓球和右边第一个乒乓球的权值…

ASP.NET Core 2.1带来SignalR、Razor类库

随着.NET Core 2.1的发布&#xff0c;微软推出了 ASP.NET Core 2.1。这是一个强大的版本&#xff0c;包括实时通信库SignalR&#xff0c;更新的模板使GDPR更容易遵守&#xff0c;并且针对Angular、React&#xff0c;以及React Redux更新了SPA模板。在2013年发布传统的ASP.NET时…

【bfs】WJ的逃离

WJ&#xff08;J&#xff09;的逃离 题目大意&#xff1a; 有一个nm的矩阵&#xff0c;*是不可走的&#xff0c;0是可走的&#xff0c;求1,1到n,m的最小转弯次数 原题&#xff1a; 题目描述 当WJ醒来时&#xff0c;发现自己被困在一个地图的左上角&#xff0c;幸好WJ有张图…

P2408- 不同子串个数【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P2408 题目大意 给出一个字符串&#xff0c;求有多少个不同的子串。 解题思路 进行后缀排序之后&#xff0c;对于位置iii他有n−i1n-i1n−i1个后缀&#xff0c;然后它和排在它前面的后缀有heightiheight_iheighti​个重复的…

针对ASP.NET Core Web API的先进架构

.NET Core 最初是在2016年发布的&#xff0c;随着.NET Core 2.0的发布&#xff0c;微软拥有了下一个通用、模块化、跨平台和开源的平台主版本。.NET Core已经创建了许多API&#xff0c;在当前版本的.net框架中均可用。它最初是为下一代ASP.NET解决方案而创建的&#xff0c;但现…

线段树-HDU5737-这题有点神

HDU5737 题意 [1][1][1]有长度为nnn的序列A,BA,BA,B [2]Q[2]Q[2]Q此操作两种类型 (1,l,r,x)(1,l,r,x)(1,l,r,x)将区间[l,r][l,r][l,r]的aia_iai​覆盖为xxx(2,l,r)(2,l,r)(2,l,r)询问区间[l,r][l,r][l,r]中有多少ai≥bia_i \ge b_iai​≥bi​ 题解 考虑用线段树维护. 重点考…

【高精】Oliver的成绩(jzoj 2008)

Oliver的成绩 题目大意&#xff1a; Oliver考了一次试&#xff0c;现在知道他的语数英的成绩&#xff0c;还有年级其他n个人的成绩&#xff0c;现在问Oliver三科各和年级第一差多少分&#xff0c;如果Oliver在这一科上是第一&#xff0c;则输出‘0’ 样例输入 10 10 10 …

P4070-[SDOI2016]生成魔咒【SA,平衡树】

正题 题目链接:https://www.luogu.com.cn/problem/P4070 题目大意 长度为nnn的字符串&#xff0c;对于每个iii求字符串1∼i1\sim i1∼i部分有多少个不同的子串。 解题思路 对于整个串ans∑i1nn−i1−heightians\sum_{i1}^nn-i1-height_ians∑i1n​n−i1−heighti​&#xff…

ASP.NET Core 2.1 使用Docker运行

1.新建一个 ASP.NET Core 2.1 项目然后运行一下项目&#xff0c;确保我们刚刚建立的项目可以正常运行。2.编写 Dockerfile新建一个文本文件&#xff0c;命名为 DockerfileFROM microsoft/dotnet:2.1-aspnetcore-runtimeWORKDIR /appCOPY . .EXPOSE 80ENTRYPOINT ["dotnet&…

【DP】和谐的奶牛(jzoj 1750)

和谐的奶牛 题目大意&#xff1a; 有一些括号&#xff08;保证是合法的&#xff0c;合法&#xff1a;每一个左括号都有自己配对的有括号&#xff09;&#xff0c;现在要将这些括号分为两组&#xff08;其中一组可以为空&#xff09;&#xff0c;分完组后括号的顺序要和原来的…

费用流-Wannafly Day2 TwoGraph-神题

TwoGraph 题意 题解 这真是一道神题,这题有两点比较难想,其中第一点是最难想的. 我们先考虑只有一张图的情况. 性质: [1]如果给每个点匹配一条边,形成一个(点,边)(点,边)(点,边)对,其中点不能重复出现,边也不能重复出现.那么这些对形成的图的联通块要么是树,要么是环套树. 证…

ASP.NET Core Web API 与 SSL

SSL一直没有真正研究过SSL&#xff0c;不知道下面的理解是否正确。SSL是Secure Sockets Layer的缩写&#xff0c;它用来保护服务器和客户端之前的通信。它是基于信任加密的概念。在介绍SSL的原理之前&#xff0c;首先介绍一下加密&#xff08;Encryption&#xff09;的概念。刷…

P5662-纪念品【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5662 题目大意 有TTT天&#xff0c;nnn个纪念品&#xff0c;每个纪念品每天的价格不同&#xff0c;数量不限。开始小明有mmm块钱&#xff0c;求最后一天的最多钱。 解题思路 因为一个纪念品可以一天卖出并且一天买入&#…