【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径

这篇具有很好参考价值的文章主要介绍了【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径,CCF-CSP,算法综合,算法,树的半径,ccf-csp,c++,图论

【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径,CCF-CSP,算法综合,算法,树的半径,ccf-csp,c++,图论

【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径,CCF-CSP,算法综合,算法,树的半径,ccf-csp,c++,图论

思路分析

本题所求的实际上是树的直径,即树中的任意两个结点之间的最大距离

采用的方法是dfs

从根节点开始遍历,对于每一个被dfs的结点m,返回此结点m到所有叶子结点的距离最大的那个即d1,同时在dfs过程当中记录结点m到所有叶子结点的距离第二大的那个,即d2

那么最终答案就是对于每一个结点取res=res(res,d1+d2)

举个栗子:

【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径,CCF-CSP,算法综合,算法,树的半径,ccf-csp,c++,图论

设最下面的1--4的编号分别为5,6,7,8

从1开始dfs,首先进入2,然后对2dfs,进入3,然后对3进行dfs,对3dfs的时候,又进入5,对5dfs,此时由于结点5没有分支,所以这一次dfs得到d1=d2=0,返回给结点3的值为d1+1=1,之后3也算dfs完毕,结果:d1=1,d2=0,返回给2的值为d1+1=2,然后开始对4dfs,此时会进入下一层,依次对6,7,8进行dfs均返回d1+1=1,所以对于4dfs的结果是d1=1,d2=1,返回给2的值为2,所以最终2dfs结果是d1=2,d2=2,此时得到ans最大值:d1+d2=4.返回给结点1的值为d1+1=3,所以对1dfs完毕得到的结果是d1=3,d2=0,最终返回的结果为d1+1=4,同时保留答案ans=4

最后再提示一下,虽然树的本质是无向图,但是在建立边的时候,直接建成从上往下指的有向边即可,因为dfs的时候是从上往下的。当然建立成无向边也可以,只不过需要一个bool数组标记已经遍历过的结点,防止进入无限循环。文章来源地址https://www.toymoban.com/news/detail-704674.html

满分代码

#include<iostream>
#include<cstring>
using namespace std;
const int N=20010;
int e[N],ne[N],h[N],idx;
int n,m;
int ans;
void add(int a,int b)
{
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int dfs(int u)
{
	int d1=0,d2=0;
	for(int i=h[u];i!=-1;i=ne[i])
	{
		int j=e[i];
		int d=dfs(j);
		if(d>=d1)d2=d1,d1=d;
		else if(d>=d2)d2=d;
	}
	ans=max(ans,d1+d2);
	return d1+1;
}
int main()
{
	scanf("%d%d",&n,&m);
	memset(h,-1,sizeof h);
	for(int i=2;i<=n+m;i++)
	{
		int x;
		scanf("%d",&x);
		add(x,i);
	}
	dfs(1);
	cout<<ans;
	return 0;
}

到了这里,关于【ccf-csp题解】第四次csp认证-第四题-网络延时-树的直径的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CCF-CSP真题《202303-5 施肥》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202303-5 试题名称: 施肥 时间限制: 2.0s 内存限制: 1.0GB 问题描述: 春天到了,西西艾弗岛上的 n 块田地需要施肥了。n 块田地编号为 1,2,⋯,n,按照编号从小到大的顺序排成一列。 为了给

    2024年02月09日
    浏览(39)
  • CCF-CSP 202209-1 如此编码 C语言 (满分通过代码+题解)

    试题编号: 202209-1 试题名称: 如此编码 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 某次测验后,顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字,小 P 同学不禁陷入了沉思…… 已知某次测验包含 n 道单项选择题,其中第 i 题(1≤i≤n)有 

    2023年04月15日
    浏览(39)
  • CCF-CSP真题《202303-3 LDAP》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202303-3 试题名称: LDAP 时间限制: 12.0s 内存限制: 1.0GB 问题描述: 西西艾弗岛运营公司是一家负责维护和运营岛上基础设施的大型企业,拥有数千名员工。公司内有很多 IT 系统。为了能够实

    2024年02月12日
    浏览(40)
  • CCF-CSP真题《202303-1 田地丈量》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202303-1 试题名称: 田地丈量 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 西西艾弗岛上散落着 n 块田地。每块田地可视为平面直角坐标系下的一块矩形区域,由左下角坐标 (x1,y1) 和右上角

    2024年02月12日
    浏览(94)
  • CCF-CSP真题《202305-2 矩阵运算》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202305-2 试题名称: 矩阵运算 时间限制: 5.0s 内存限制: 512.0MB 问题描述: Softmax(Q×KTd)×V 是 Transformer 中注意力模块的核心算式,其中 Q、K 和 V 均是 n 行 d 列的矩阵,KT 表示矩阵 K 的

    2024年02月16日
    浏览(24)
  • CCF-CSP真题《202305-1 重复局面》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202305-1 试题名称: 重复局面 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。 国际象棋每一个局面可以用大

    2024年02月13日
    浏览(44)
  • CCF-CSP真题《202305-3 解压缩》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202305-3 试题名称: 解压缩 时间限制: 5.0s 内存限制: 512.0MB 问题描述: 西西艾弗岛运营公司是一家负责维护和运营岛上基础设施的大型企业。在公司内,有许多分管不同业务的部门都需要使

    2024年02月13日
    浏览(31)
  • CCF-CSP真题《202303-2 垦田计划》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202303-2 试题名称: 垦田计划 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 顿顿总共选中了 n 块区域准备开垦田地,由于各块区域大小不一,开垦所需时间也不尽相同。据估算,其中第 i 块

    2024年02月12日
    浏览(39)
  • CCF-CSP真题《202303-1 田地丈量》思路+python,c++,java满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202303-1 试题名称: 田地丈量 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 西西艾弗岛上散落着 n 块田地。每块田地可视为平面直角坐标系下的一块矩形区域,由左下角坐标 (x1,y1) 和右上角

    2024年02月09日
    浏览(35)
  • CCF-CSP真题《202309-1 坐标变换(其一)》思路+python,c++,java满分题解

    想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号: 202309-1 试题名称: 坐标变换(其一) 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 对于平面直角坐标系上的坐标 (x,y),小 P 定义了一个包含 n 个操作的序列 T=(t1,t2,⋯,tn)。其中每个操作 

    2024年02月08日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包