当前位置: 首页 > article >正文

CSES-1132 Tree Distances I(树的直径)

题目传送门icon-default.png?t=O83Ahttps://vjudge.net/problem/CSES-1132

解题思路

本题是贪心题……

首先求出树的直径,对于每一个点,它的最大距离应该就是到直径两端点的距离的最大值……

代码

#include<bits/stdc++.h>
using namespace std;

int n;
vector<int> g[200001];
int f[200001],mx,d1,d2;
int ans[200001];
void dfs(int x,int fa)
{
	for(auto y:g[x])
	{
		if(y!=fa)
		{
			f[y]=f[x]+1;
			if(f[y]>f[mx])mx=y;
			dfs(y,x);
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n;
	int u,v;
	for(int i=1;i<n;i++)
	{
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	
	dfs(1,1);
	
	f[mx]=0;
	d1=mx;
	dfs(mx,mx);
	d2=mx;
	
	f[d1]=0;
	dfs(d1,d1);
	for(int i=1;i<=n;i++)
	{
		ans[i]=f[i];
	}
	
	f[d2]=0;
	dfs(d2,d2);
	for(int i=1;i<=n;i++)
	{
		ans[i]=max(ans[i],f[i]);
	}
	for(int i=1;i<=n;i++)
		cout<<ans[i]<<" ";
}


http://www.kler.cn/a/451662.html

相关文章:

  • 【ES6复习笔记】Symbol 类型及其应用(9)
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战训练三)
  • ROSboard:为您的机器人提供强大的Web可视化工具
  • 第22天:信息收集-Web应用各语言框架安全组件联动系统数据特征人工分析识别项目
  • Ubuntu22.04 LTS 安装nvidia显卡驱动
  • Android自定义吐司三
  • 云宏获亚太信息通讯科技大赛二等奖
  • 【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29
  • 线性代数期末总复习的点点滴滴(1)
  • 【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
  • 【python实战】-- mtf覆盖率计算
  • 产品升级!Science子刊同款ARGs-HOST分析,get!
  • 【Python知识】Python面向对象编程知识
  • MySQL知识汇总(一)
  • Stable Diffusion WebUI Two Shot 项目常见问题解决方案
  • 在Android应用中实现条形码扫描与购物车功能
  • Linux系统在没有工具软件时如何简单测试串口?
  • Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行
  • 15_HTML5 表单属性 --[HTML5 API 学习之旅]
  • Nginx 常用安全头
  • Linux(Centos 7.6)基本信息查看
  • Flutter:生成二维码
  • 鸿蒙开发使用axios请求后端网络服务出现该错误
  • 利用Python爬虫速卖通按关键字搜索AliExpress商品
  • 自动化 + 人工智能:投标行业的未来是什么样的?
  • SQL Server 数据库更新调用外部HTTP请求