【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开始的)
}
【dfs】【树】机器选择相关推荐
- 图论复习——dfs树,点双,边双,强连通分量
知识点 dfs树 对一个图运行 dfs 算法,每个点uuu的父亲定义为第一次遍历uuu时的前驱结点,若无则为根. 无向图的 dfs树 没有横叉边. 有向图的 dfs树 横叉边方向唯一,总是从后访问的点 ...
- 【BZOJ1064】[Noi2008]假面舞会 DFS树
[BZOJ1064][Noi2008]假面舞会 Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择 ...
- 图论 ---- E. Pairs of Pairs(构造+无向图的dfs树的性质)
题目链接 题目大意: 题目解法: 首先我们先对这个图求一个dfs树dfs树dfs树,那么对dfs树dfs树dfs树求树的直径rrr如果⌈n2⌉≤r\lceil\frac{n}{2}\rceil\leq ...
- 图论 ---- 构造DFS树的思想 K - Boomerangs Gym - 102001K
题目链接 题目大意: 解题思路: 启发性思考首先我们先图切成dfs树,然后给图一个稳定结构之后,我们就可以去构造了 对于每个点我们从第底端开始构造每次把每次点的儿子两两匹配,如果是奇数个儿子就把多出来 ...
- Last Theorem CodeForces - 1325F(dfs树找最大环+思维)
It's the year 5555. You have a graph, and you want to find a long cycle and a huge independent set, ...
- Codeforces Round #628 (Div. 2) F. Ehab‘s Last Theorem dfs树
传送门 文章目录 题意: 思路: 题意: 给你个nnn个点mmm条边的图,可以选择完成以下两个任务中的一个: (1)(1)(1)找出大小恰好为n\sqrt nn的一个独立集. (2)(2)(2)找出 ...
- CF732F Tourist Reform(dfs树、边双连通图、tarjan)
因为知道了算法tag,所以想到了正解: 先给出两个性质: 边双给边定向一定可以转为强连通图,此为最优解 树给边定向后R的最小值必为0 性质2证明如下: 设树有n个节点, 若R_min!=0, 则每点出 ...
- [XSY] 分割(dfs树)
分割 题目相当于问 删掉两个点后 图是否仍然连通 割点问题,考虑用dfs树解决 设删去点u,v(dfn[v]<dfn[u]) 把 u, v 删去之后整棵树大概断成了几个部分: • v 上面到根的 ...
- [dfs树]「CEOI 2017」One-Way Streets
不难的题.首先任意环上的边一定不是必经边,答案为B.我们随便搞一颗原图的dfs树,那么非树边,和每条飞树边覆盖的树上的链都是B.在树上打链覆盖的标记即可. 然后是对于每个x到y有路的限制,我们直接在x ...
最新文章
- 从*p++说指针,数组,结构和函数
- 计算机网络应用基础 王建珍,计算机网络应用基础
- html视频怎么自动全屏播放,网页中用标签播放视频,可以全屏播放的代码肿么写?...
- UVa 10420 List of Conquests
- 【Cockpit】 如何组织管理多台服务器?
- [react-router] React-Router 4怎样在路由变化时重新渲染同一个组件?
- ruby mysql dbi_Ruby MySQL DBI实例
- PHP单引号 ' ',没有任何意义,对所引内容不经任何处理直接拿过来
- (3)插入排序之一 直接插入排序
- ubtunu打开firefox_在Ubuntu中安装Mozilla Firefox的4种方法
- nfs挂载出错:mount.nfs: access denied by server while mounting
- 解题:NOI 2016 优秀的拆分
- CRMEB/V4.4标准版打通版商城源码小程序公众号H5+App商城源码
- 【网络攻防技术】实验八——SQL注入实验
- 4G全网通模块 安卓 高通骁龙MSM8909核心板 开发板
- 基于GIS的三维智慧警务系统
- echarts 立体柱状图(多个柱状图)
- 求解大规模稀疏多目标优化问题的一种进化算法(SparseEA)笔记
- linux内核时间管理(一) : 时间概念和延迟操作
- Word论文转化成静态文本
热门文章
- linux服务器查配置信息失败,查看Linux服务器的配置信息
- 算法设计与分析——递归与分治策略——最接近点对问题
- 软件构造学习笔记-第二周
- [Spring5]IOC容器_Bean管理XML方式_自动装配
- [蓝桥杯2015决赛]奇怪的数列-双指针+模拟
- hdu1873 看病要排队-优先队列
- [蓝桥杯][基础练习VIP]完美的代价-贪心
- 高等数学上-赵立军-北京大学出版社-题解-练习2.3
- maven知识提炼总结
- vue动态跟新layui的select_vue+layui实现select动态加载后台数据的例子