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

最深的根,

1498. 最深的根

  •    题目
  •    提交记录
  •    讨论
  •    题解
  •    视频讲解

一个无环连通图可以被视作一个树。

树的高度取决于所选取的根节点。

现在,你要找到可以使得树的高度最大的根节点。

它被称为最深的根。

输入格式

第一行包含整数 NN,表示节点数量。

节点编号为 1∼N1∼N。

接下来 N−1N−1 行,每行包含两个整数,表示两个节点之间存在一条边。

输出格式

输出最深的根的节点编号。

如果最深的根不唯一,则按照从小到大的顺序,将它们依次输出,每个占一行。

如果给定的图不是树,输出 Error: K components,其中 KK 是图中连通分量的数量。

数据范围

1≤N≤1041≤N≤104

输入样例1:
5
1 2
1 3
1 4
2 5
输出样例1:
3
4
5
输入样例2:
5
1 3
1 4
2 5
3 4
输出样例2:
Error: 2 components
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
const int N=1e4+10,M=N<<1;
int h[N],e[M],ne[M],idx;
int p[N];
int n;
int find(int x)
{if(p[x]!=x) p[x]=find(p[x]);return p[x];
}
void add(int a,int b)
{e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
int dfs(int u,int father)
{// cout<<u<<endl;int depth=-1;for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];if(j==father)    continue;depth=max(depth,dfs(j,u)+1);}return depth;
}
int main()
{cin>>n;memset(h,-1,sizeof(h));for(int i=1;i<=n;i++)   p[i]=i;int cnt=n;for(int i=1;i<=n-1;i++){int x,y;cin>>x>>y;if(find(x)!=find(y))p[find(x)]=find(y),cnt--;add(x,y),add(y,x);}if(cnt>1)   {printf("Error: %d components",cnt);return 0;}else{vector<int>node;int maxn=-1;for(int i=1;i<=n;i++){int depth=dfs(i,-1);if(depth>maxn){node.clear();node.push_back(i);maxn=depth;}else if(depth==maxn)node.push_back(i);// cout<<maxn;}for(auto &t:node)   cout<<t<<endl;}
}

http://www.lryc.cn/news/418033.html

相关文章:

  • 【常见的设计模式】工厂模式
  • postgres收缩工具两种工具的使用对比
  • 仿真入门——CST软件如何设置分布式计算的共享储存
  • 【JVM基础17】——实践-说一下JVM调优工具
  • 【QT】Qt中Websocket的使用
  • 【vue3】【elementPlus】【国际化】
  • 用python实现求两个整数的最大公约数
  • Linux 内核源码分析---proc 文件系统
  • 视频号直播回放怎么下载?
  • 【第九节】python中xml解析和json编解码
  • yolo v8部署到云服务器问题记录
  • 端口被占用,杀死进程的步骤
  • 接口入门(企业常见使用,一分钟搞定版)
  • 深入解析:Cookie 与 Session 的区别及应用场景
  • LLM金融文本分类文档说明
  • EI检索,2天录用,3天见刊!截稿在即,这本水刊你还不投吗?
  • sql获取过去的小时数
  • 【Android Studio】彻底卸载
  • 美术版权可以当做商标使用吗
  • 控制某些请求不记录日志
  • Java线程池原理剖析和应用指南
  • ST-LINK烧录MCU
  • Go - 10. * 值类型和指针类型的差异
  • waf绕过:网络安全狗绕过
  • Django中的模型小总结:
  • 深入理解 RDMA 的软硬件交互机制
  • 轻优图片编辑压缩官网 轻优图片编辑压缩
  • 封装el-table 基于element封装可配置JSON表格组件
  • Springboot 开发之 Quartz 任务调度框架简介
  • 详解Xilinx FPGA高速串行收发器GTX/GTP(4)--TX/RX接口的数据位宽和时钟设计