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

#Z2294. 打印树的直径

Description

给你一棵树,树上有N个点,编号从0到N-1

请找出任意一条树的直径,并输出直径上的点,输出顺序为从直径的某个端点走向另一个端点

Format

Input

第一行一个整数 n;

之后 n-1 行每行两个整数 u,v,表示 u 和 v 之间有边。

1<=N<=2e5

Output

如题

Samples

输入数据 1

10
0 1
0 2
0 4
0 6
0 7
1 3
2 5
4 8
6 9

Copy

输出数据 1

3 1 0 2 5

思路

是树的直径的加难板,不会的可以看看求树的直径(史上最详细,匠心之作)_树的直径存在负边权-CSDN博客 

我们可以在求完树的直径的两个端点后再做一次dfs并用栈储存路径即可,详解代码。


代码

#include<bits/stdc++.h>
using namespace std;
vector<int>vec[1000001];
bool vis[10000001];
int ans,dep[1000001],n,x,y,len,t,tt,ttt,a[1000001],as;
stack<int> st;
void dfs(int nd,int deep)
{dep[nd] = deep;vis[nd] = 1;for(int i = 0;i < vec[nd].size();i++){int son = vec[nd][i];if(vis[son] == 0){dfs(son,deep + 1);}}
}
void dfs_2(int nd)
{vis[nd] = 1;st.push(nd);if(nd == ttt){while(st.size()){a[++as] = st.top();st.pop();}for(int i = 1;i <= as;i++) cout<<a[i]<<' ';exit(0);}for(int i = 0;i < vec[nd].size();i++){int son = vec[nd][i];if(vis[son] == 0) dfs_2(son);}st.pop();
}
signed main()
{cin>>n;for(int i = 1;i < n;i++){cin>>x>>y;vec[x].push_back(y);vec[y].push_back(x);}dfs(0,1);for(int i = 0;i < n;i++)if(tt < dep[i]){tt = dep[i];t = i;}memset(vis,0,sizeof(vis));memset(dep,0,sizeof(dep));tt = 0;dfs(t,0);for(int i = 0;i < n;i++){if(tt < dep[i]){tt = dep[i];ttt = i;}}//t~tttmemset(vis,0,sizeof(vis));dfs_2(t);return 0;
}

相关文章:

  • 【Linux系统学习】3.Linux用户和权限
  • 在容器镜像中为了安全为什么要删除 setuid 和 setgid?
  • jmeter设置关联
  • 汇编笔记 01
  • 【RabbitMQ(一)】:基本介绍 | 配置安装与快速入门
  • python将word文件转换成pdf文件
  • PHPExcel导出excel
  • Python调用pyspark报错整理
  • 在java中一般什么时候用==
  • 打卡今天学习 Linux
  • 美国服务器如何
  • 1 月 Web3 游戏行业概览:市场实现空前增长
  • [项目管理] 如何使用git客户端管理gitee的私有仓库
  • 【CV论文精读】EarlyBird: Early-Fusion for Multi-View Tracking in the Bird’s Eye View
  • LRU缓存
  • Google 是如何开发 Web 框架的
  • C# 免费离线人脸识别 2.0 Demo
  • CAP理论的例子讲解
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • dva中组件的懒加载
  • golang中接口赋值与方法集
  • JAVA SE 6 GC调优笔记
  • magento 货币换算
  • QQ浏览器x5内核的兼容性问题
  • Spring Cloud Feign的两种使用姿势
  • 前端自动化解决方案
  • 如何选择开源的机器学习框架?
  • 软件开发学习的5大技巧,你知道吗?
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 2017年360最后一道编程题
  • 如何正确理解,内页权重高于首页?
  • 正则表达式-基础知识Review
  • ​比特币大跌的 2 个原因
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • $.ajax()参数及用法
  • (poj1.2.1)1970(筛选法模拟)
  • (层次遍历)104. 二叉树的最大深度
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十)T检验-第一部分
  • (转)memcache、redis缓存
  • (转)winform之ListView
  • .libPaths()设置包加载目录
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 回调、接口回调、 委托
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • []指针
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [Effective C++读书笔记]0012_复制对象时勿忘其每一部分