题意:

输入一个正整数N(N<=10000),然后输入N-1条边,求使得这棵树深度最大的根节点,递增序输出。如果不是一棵树,输出这张图有几个部分。

trick:

时间比较充裕数据可能也不是很极限,所以用了一个暴力的手段。直接枚举度数为1的点进行深度优先搜索,如果递归了一万次还没有return就当它有环。(这道题的数据不存在只有一个带有自环的部分,即如有自环图必定不止一个)正解应当是dfs一次以后找到一些可能是最深根的叶子结点们,然后对这些叶子节点们依次dfs,再找到对应的一些叶子节点们。成对的叶子结点并且长度最大的就是答案。(最深根一定是成对成对的)(正解待补)

AAAAAccepted code:

 #include<bits/stdc++.h>
using namespace std;
vector<int>edg[];
int vis[];
int deg[];
int ans[];
int tmp=;
int mx=;
int num=;
int dfs(int x,int fa){
num++;
if(num>)//断言出现自环,一共只有N个点
return ;
vis[x]=;
++tmp;
mx=max(mx,tmp);
for(auto it:edg[x])
if(it!=fa)
dfs(it,x);
--tmp;
return ;
}
int main(){
int n;
cin>>n;
for(int i=;i<n;++i){
int u,v;
cin>>u>>v;
edg[u].push_back(v);
edg[v].push_back(u);
++deg[u];
++deg[v];
}
int cnt=;
int mxx=;
int flag2=;
for(int i=;i<=n;++i){
tmp=;
mx=;
if(deg[i]==){//叶子结点才可能作为最深根出现
if(!vis[i])
++cnt;
num=;
dfs(i,);
ans[i]=mx;
mxx=max(mxx,mx);
}
}
for(int i=;i<=n;++i)
if(!vis[i]){
num=;
dfs(i,);
++cnt;
}
int flag=;
if(cnt==){
for(int i=;i<=n;++i)
if(ans[i]==mxx){
if(flag)
cout<<"\n";
cout<<i;
flag=;
}
}
else
cout<<"Error: "<<cnt<<" components";
return ;
}

【PAT甲级】1021 Deepest Root (25 分)(暴力,DFS)的更多相关文章

  1. PAT 甲级 1021 Deepest Root (25 分)(bfs求树高,又可能存在part数part>2的情况)

    1021 Deepest Root (25 分)   A graph which is connected and acyclic can be considered a tree. The heig ...

  2. PAT甲级1021. Deepest Root

    PAT甲级1021. Deepest Root 题意: 连接和非循环的图可以被认为是一棵树.树的高度取决于所选的根.现在你应该找到导致最高树的根.这样的根称为最深根. 输入规格: 每个输入文件包含一个 ...

  3. PAT 甲级 1021 Deepest Root (并查集,树的遍历)

    1021. Deepest Root (25) 时间限制 1500 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A graph ...

  4. PAT 甲级 1021 Deepest Root

    https://pintia.cn/problem-sets/994805342720868352/problems/994805482919673856 A graph which is conne ...

  5. 1021 Deepest Root (25 分)

    A graph which is connected and acyclic can be considered a tree. The height of the tree depends on t ...

  6. [PAT] 1021 Deepest Root (25)(25 分)

    1021 Deepest Root (25)(25 分)A graph which is connected and acyclic can be considered a tree. The hei ...

  7. 1021. Deepest Root (25)——DFS+并查集

    http://pat.zju.edu.cn/contests/pat-a-practise/1021 无环连通图也可以视为一棵树,选定图中任意一点作为根,如果这时候整个树的深度最大,则称其为 deep ...

  8. PAT 甲级 1020 Tree Traversals (25分)(后序中序链表建树,求层序)***重点复习

    1020 Tree Traversals (25分)   Suppose that all the keys in a binary tree are distinct positive intege ...

  9. PAT-1021 Deepest Root (25 分) 并查集判断成环和联通+求树的深度

    A graph which is connected and acyclic can be considered a tree. The height of the tree depends on t ...

随机推荐

  1. JS中的解构

    先看看数组解构: function fn(){ return [1,2,3]; } var [a,b,c] = fn(); console.log(a,b,c); // 1 2 3 var [d,,f ...

  2. 理解Javascript的原型和原型链

    前言 本文2088字,阅读大约需要13分钟. 总括: 结合实例阐述了原型和原型链的概念并总结了几种创建对象的方法,扩展原型链的方法. 参考文章:The Secret Life of Objects,继 ...

  3. rosserial学习记录

    1.参考博客:rosserial移植到STM32(CUBEMX+HAL库) 网址:https://blog.csdn.net/qq_37416258/article/details/84844051 ...

  4. 吴裕雄 python 神经网络——TensorFlow图片预处理

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 使用'r'会出错,无法解码,只能以2进制形式读 ...

  5. super this 关键字

    super 关键字的三种用法: 1.在子类成员方法中,访问父类成员变量 2.在子类成员方法中,访问父类成员方法 3.在子类构造方法中,访问父类构造方法 this 关键字的三种用法: 1.在本类的成员方 ...

  6. 360安全浏览器已经完成和统一操作系统UOS的适配工作

    导读 统信软件公司宣布,360安全浏览器已经完成和统一操作系统UOS的适配工作.如今,基于龙芯.兆芯.飞腾.海光等国产CPU的统一操作系统UOS,赢全面支持电子公文.电子签章.流版式办公插件等近百款国 ...

  7. SIMS(secondary ion mass spectroscopy)二次离子质谱

    1.仪器介绍 二次离子质谱(SIMS)是一种用于通过用聚焦的一次离子束溅射样品表面并收集和分析喷射的二次离子来分析固体表面和薄膜的组成的技术.SIMS是最灵敏的表面分析技术,元素检测限为百万分之几到十 ...

  8. python实现网页登录时的rsa加密流程

    对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录, ...

  9. mysql 多次分组查询 数据最大的一行

    SELECT B, D, Max(E)FROM `总表`WHERE B = '张士建'GROUP BY B, D 通过查询创建工具 编写查询语句

  10. android界面布局

    (一)LinearLayout界面编排模式 他的格式是按照线性顺序,由上往下或右左往右,逐一排列界面组件. layout_width:中的“match_parent”表示要填满他所在的外框,而“wra ...