pat甲1021.Deepest Root(简单dfs)
来源:互联网 发布:c语言函数调用过程 编辑:程序博客网 时间:2024/05/17 05:43
1021. Deepest Root (25)
A graph which is connected and acyclic can be considered a tree. The height of the tree depends on the selected root. Now you are supposed to find the root that results in a highest tree. Such a root is called the deepest root.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (<=10000) which is the number of nodes, and hence the nodes are numbered from 1 to N. Then N-1 lines follow, each describes an edge by given the two adjacent nodes' numbers.
Output Specification:
For each test case, print each of the deepest roots in a line. If such a root is not unique, print them in increasing order of their numbers. In case that the given graph is not a tree, print "Error: K components" where K is the number of connected components in the graph.
Sample Input 1:51 21 31 42 5Sample Output 1:
345Sample Input 2:
51 31 42 53 4Sample Output 2:
Error: 2 components
#include<iostream>#include<vector>#include<cstring>using namespace std;vector<int>graph[10002];//邻接表 int n,ans,_max;int flag[10002];//作为根时树的深度 int book[10002];//标记数组 void dfs1(int step){book[step]=1;for(int i=0;i<graph[step].size();i++){if(!book[graph[step][i]])dfs1(graph[step][i]);} }void dfs2(int step,int cnt){_max=max(_max,cnt);book[step]=1;for(int i=0;i<graph[step].size();i++){if(!book[graph[step][i]])dfs2(graph[step][i],cnt+1);} }int main(){//邻接表建图 cin>>n;for(int i=0;i<n-1;i++){int u,v;cin>>u>>v;graph[u].push_back(v);graph[v].push_back(u);}for(int i=1;i<=n;i++){if(!book[i]){dfs1(i);ans++;}} //如果联通分量的数目不唯一 if(ans>1){ cout<<"Error: "<<ans<<" components"<<endl; goto tag; } else { for(int i=1;i<=n;i++){ memset(book,0,sizeof(book)); _max=0; dfs2(i,1); flag[i]=_max;} for(int i=1;i<=n;i++){_max=max(_max,flag[i]);}for(int i=1;i<=n;i++){if(flag[i]==_max)cout<<i<<endl;} } tag:return 0;}
- pat甲1021.Deepest Root(简单dfs)
- 【PAT】 Deepest Root (DFS)
- PAT 1021. Deepest Root
- PAT 1021. Deepest Root
- pat 1021. Deepest Root
- PAT 1021. Deepest Root
- PAT 1021. Deepest Root
- 【PAT】1021. Deepest Root
- PAT 1021. Deepest Root
- PAT 1021. Deepest Root (25)(dfs求每个root的层数)(待修改)
- PAT--1021. Deepest Root(DFS+并查集)
- PAT 1021 Deepest Root (25) (并查集+DFS)
- PAT 甲级 1021. Deepest Root(dfs:无向图的最远路径、连通分量个数)
- 1021. Deepest Root (25)-PAT
- PAT 1021. Deepest Root (25)
- PAT 1021. Deepest Root (25)
- PAT 1021. Deepest Root (25)
- PAT 1021. Deepest Root (25)
- JAVASE中那些新手常见却不易找的错误
- Android性能优化——渲染
- 浮点类型的存储方式
- Sort List ---LeetCode
- 让 Caps Lock 键变得实用
- pat甲1021.Deepest Root(简单dfs)
- Java基础I/O流(一)
- 数据库SQL优化大总结之
- 反射、类加载
- Ubuntu 安装JDK1.8
- android 中保证进程不被杀死
- Mysql启动不了报错Timeout error 磁盘满
- arm平台和相关的矩阵运算库
- MySQL最常用的几个基本SQL语句