1021. Deepest Root (25)-PAT
来源:互联网 发布:淘宝 信息系统 编辑:程序博客网 时间:2024/05/06 02:48
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
推荐指数:※※
来源:http://pat.zju.edu.cn/contests/pat-a-practise/1021
本题直接用dfs就可以了(本以为要加一些剪枝才能通过。。。)
#include<iostream>#include<string.h>#include<vector>using namespace std;#define N 10001vector<int> edge[N];int deepest[N];int visited[N];int n;int dfs(int now_node){if(visited[now_node]==1)return 0;visited[now_node]=1;if(edge[now_node].size()==0)return 1;int i,maxdeep=0,tmp;for(i=0;i<edge[now_node].size();i++){//find a deepest from this nodeif(visited[edge[now_node][i]]==0){tmp=dfs(edge[now_node][i]);maxdeep=maxdeep>tmp?maxdeep:tmp;}}return maxdeep+1;}int main(){int i,j;cin>>n;for(i=1;i<=n-1;i++){int v1,v2;cin>>v1>>v2;edge[v1].push_back(v2);edge[v2].push_back(v1);}memset(deepest,0,sizeof(deepest));int max_deep=0;int flag=0;for(i=1;i<=n;i++){if(0==flag)memset(visited,0,sizeof(visited));deepest[i]=dfs(i);max_deep=max_deep>deepest[i]?max_deep:deepest[i];for(j=i;j<=n;j++){//check if it is a connected graphif(visited[j]==0){flag++;i=j-1;break;}}}if(flag>0){cout<<"Error: "<<flag+1<<" components"<<endl;}else{for(i=1;i<=n;i++){if(deepest[i]==max_deep)cout<<i<<endl;}}return 0;}
- 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)
- PAT 1021. Deepest Root (25)
- 【PAT】1021. Deepest Root (25)
- pat 1021. Deepest Root (25)
- 【PAT】1021. Deepest Root (25)
- pat 1021. Deepest Root (25)
- PAT 1021. Deepest Root (25)
- 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
- linux中断下半部实现机制之软中断的实现
- static class 静态类(Java)
- C语言--指针函数和函数指针
- 播放SDcard上面的音频文件
- Android下音频录制以及网络传输的思路及开发方法
- 1021. Deepest Root (25)-PAT
- 商品图片下载实现
- Android Kernel - Boot Loader
- Oil Deposits
- Jquery radio checked
- 基于linux-2.6.32.2的servfox移植
- hdu 3265 线段树+扫描线
- code blocks sublime text2 样式设置
- [提问]关于QT cookie处理 的,post 时QT不能自己带上吗?