试题编号: 201503-4
试题名称: 网络延时
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机、交换机与电脑之间使用网络连接。交换机按层级设置,编号为1的交换机为根交换机,层级为1。其他的交换机都连接到一台比自己上一层的交换机上,其层级为对应交换机的层级加1。所有的终端电脑都直接连接到交换机上。
  当信息在电脑、交换机之间传递时,每一步只能通过自己传递到自己所连接的另一台电脑或交换机。请问,电脑与电脑之间传递消息、或者电脑与交换机之间传递消息、或者交换机与交换机之间传递消息最多需要多少步。
输入格式
输入的第一行包含两个整数n, m,分别表示交换机的台数和终端电脑的台数。
  第二行包含n - 1个整数,分别表示第2、3、……、n台交换机所连接的比自己上一层的交换机的编号。第i台交换机所连接的上一层的交换机编号一定比自己的编号小。
  第三行包含m个整数,分别表示第1、2、……、m台终端电脑所连接的交换机的编号。
输出格式
输出一个整数,表示消息传递最多需要的步数。
样例输入
4 2
1 1 3
2 1
样例输出
4
样例说明
样例的网络连接模式如下,其中圆圈表示交换机,方框表示电脑:

  其中电脑1与交换机4之间的消息传递花费的时间最长,为4个单位时间。
样例输入
4 4
1 2 2
3 4 4 4
样例输出
4
样例说明
样例的网络连接模式如下:

  其中电脑1与电脑4之间的消息传递花费的时间最长,为4个单位时间。
评测用例规模与约定
前30%的评测用例满足:n ≤ 5, m ≤ 5。
  前50%的评测用例满足:n ≤ 20, m ≤ 20。
  前70%的评测用例满足:n ≤ 100, m ≤ 100。
  所有评测用例都满足:1 ≤ n ≤ 10000,1 ≤ m ≤ 10000。


问题链接:CCF201503试题。

问题描述:(参见上文)。 

问题分析:这是一个树的问题,求树的直径,即在树中找出两个结点,使得这两个结点间的距离最长,这个最长距离称为直径。一般可以用两次DFS或BFS来实现,在树上任意选取1个结点s,先用DFS或BFS找到距离s距离最远的结点start,然后再从结点start开始,再次用DFS或BFS找到距离s距离最远的结点,得到结果。

程序说明:树用邻接结点来存储,使用STL的向量数组vector<int> tree[]来表示,tree[i]中的存储从结点i能够到达的各个结点。其他说明参见源程序。

用整数表示结点,结点号是不允许重复的。终端电脑的变化从n+1开始,依次类推。

参考链接:HDU4607 Park Visit(解法二)。

提交后得100分的C++语言程序如下:

/* CCF201503-4 网络延时 */#include <iostream>
#include <vector>
#include <cstring>using namespace std;// 深度优先搜索:计算结点now到各个结点的距离,结果放入数组d[]中
void dfs(int now, int last, int d[], vector<int> tree[])
{int u, size;size = tree[now].size();for(int i=0; i<size; i++)if ((u = tree[now][i]) != last) {d[u] = d[now] + 1;dfs(u, now, d, tree);}
}int main()
{int n, m, t;// 输入数据,构建树(邻接图)cin >> n >> m;vector<int> tree[n+m+2];int dist[n+m+2];for(int i=2; i<=n; i++) {cin >> t;tree[i].push_back(t);tree[t].push_back(i);}for(int i=1; i<=m; i++) {cin >> t;tree[n+i].push_back(t);tree[t].push_back(n+i);}// 求结点1到各个结点的距离:距离放在数组dist[]中,dist[i]中存放结点1到结点i的距离memset(dist, 0, sizeof(dist));dfs(1, 0, dist, tree);// 找出距离结点1最远的结点startint start = 0;dist[start] = 0;for(int i=1; i<n+m+2; i++)if(dist[i] > dist[start])start = i;// 求start结点到各个结点的距离:距离放在数组dist[]中,dist[i]中存放结点start到结点i的距离memset(dist, 0, sizeof(dist));dfs(start, 0, dist, tree);// 找出距离结点start最远的结点targetint target = 0;for (int i=1; i<n+m+2; i++)if(dist[i] > dist[target])target = i;// 输出结果cout << dist[target] << endl;return 0;
}

转载于:https://www.cnblogs.com/tigerisland/p/7564181.html

CCF201503-4 网络延时(100分)相关推荐

  1. CCF201709-4 通信网络(100分)【DFS+BFS】

    试题编号: 201709-4 试题名称: 通信网络 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M条通路,每条通路只 ...

  2. CCF201403-4 无线网络(100分)

    试题编号: 201403-4 试题名称: 无线网络 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点 ...

  3. 6-3 网络数据流 (100 分)

    某公司收到了若干人员的信息,该信息是通过互联网以数据流的方式发过来的.这个数据流里全部是整数.每个人员信息的格式固定为三部分,第一部分为一个整数,代表这个人的编号,第二个部分也是一个整数,代表后边信息 ...

  4. CCF-CSP认证历年真题解(100分)

    转载: 链接出自:https://blog.csdn.net/tigerisland45/article/details/54755895 CCF-CSP认证历年真题解–python语言 CCF-CS ...

  5. [ccf 4] 网络延时

    网络延时 问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机.交换机与电脑之间使用网络连接.交换机按层级设置,编号为1的交换机为根交换机,层级为 1.他的交换机都连接到一台比 ...

  6. AcWing 3215 网络延时

    2022.3.2 练习 AcWing 3215 网络延时 为啥这么蠢啊我??? 愚蠢的70分代码: #include <bits/stdc++.h> using namespace std ...

  7. 四川高中计算机学校图片,四川2021年100分能上计算机学校吗

    四川100分能上计算机学校吗?从计算机学校方面所进行分析地话,中专计算机学校所对其学生的各方面要求是比较容易被进行满足的,而从学生所考的100分成绩来说的话,成绩是比较地低的,如果想要报读计算机学校的 ...

  8. 大工计算机基础在线3,大工16秋《计算机应用基础》在线测试3-满分100分.pdf

    大工16秋<计算机应用基础>在线测试3-满分100分大工16秋<计算机应用基础>在线测试3-满分100分 大工 16 秋<计算机应用基础>在线测试 3 试卷总分:1 ...

  9. 干货!我的计算机网络怎么考了 100 分的?

    作者 | 轩辕之风O 来源 | 编程技术宇宙(ID:xuanyuancoding) 有读者问我:轩辕,你是怎么学计算机网络的?鸽了好久,今天得空聊聊这个话题. 轩辕是通信工程专业,计算机网络通信自然是 ...

最新文章

  1. List-style-type属性失效
  2. python基本使用-Python的基本用法
  3. Paxos与zookeeper
  4. Android中Activity总结
  5. [leetcode]27.移除元素
  6. SpringMVC对Ajax请求的处理
  7. 【操作系统】Semaphore处理哲学家就餐问题
  8. js dojo 读取txt
  9. 字符串,字典,元祖,列表
  10. 埃斯顿工业机器人控制柜_埃斯顿estun伺服电机动力线MS3108B22-22S BDM-GA14
  11. 视频监控安防平台-国标35114(GB35114)A级检测
  12. pearson特征选择matlab,常用的特征选择方法之 Pearson 相关系数
  13. 紧急重要四象限软件用哪款便签软件?
  14. Mobile移动5G通信技术详解
  15. 服务器属于网络计算机,服务器它到底是什么,和电脑又有什么区别
  16. JavaScript随机方块
  17. pytorch编写cuda/c++ extention 方法
  18. QuTrunk与Paddle结合实践--VQA算法示例
  19. linux 防火墙 443端口映射,linux防火墙实现端口转发、端口映射及双向通路
  20. 18年华为没有一项原创的发明

热门文章

  1. ubuntu clion 创建桌面快捷方式
  2. ASan(Linux),gcc4.8以上版本自带的内存检查工具
  3. HTML4.0标准语法--表格
  4. Linux下常用的C/C++开源Socket库
  5. Linux中获取当前程序路径的方法
  6. cvDrawContours:在图像上绘制外部和内部轮廓
  7. 图像处理-仿射变换 AffineTransform
  8. 基于jsp的图书管理系统_计算机毕业设计基于JSP书籍租阅管理系统的设计与实现...
  9. python程序采用unicode编码、英文字符,Python 与 Unicode
  10. android mac测试地址,android获取有线网的Mac地址