1021. Deepest Root (25) PAT 甲级
来源:互联网 发布:java中观察者模式 编辑:程序博客网 时间:2024/05/18 06:08
传送门
#include<stdio.h>#include<set>#include<vector>using namespace std;#define MAX_N 10100set<int> temp,ans;vector<int> G[MAX_N];bool isRoot[MAX_N];int father[MAX_N];int n;int find(int x){ int r=x; while(r!=father[r]){ r=father[r]; } return r;}void merge(int a,int b){ int fa=find(a); int fb=find(b); if(fa!=fb){ father[fa]=fb; }}void init(){ for(int i=1;i<=n;i++){ father[i]=i; }}int findRoot(){ int count=0; for(int i=1;i<=n;i++){ isRoot[find(i)]=true; } for(int i=1;i<=n;i++){ if(isRoot[i]){ count++; } } //printf("count=%d\n",count); return count;}int maxh=0;void dfs(int u,int height,int pre){ if(height>maxh){ temp.clear(); temp.insert(u); maxh=height; } else if(height==maxh){ temp.insert(u); } for(int i=0;i<G[u].size();i++){ if(G[u][i]==pre) continue; else dfs(G[u][i],height+1,u); }}int main(){ scanf("%d",&n); init(); int a,b; for(int i=1;i<n;i++){ scanf("%d%d",&a,&b); G[a].push_back(b); G[b].push_back(a); merge(a,b); } int flag=findRoot(); if(flag!=1){ printf("Error: %d components\n",flag); } else{ dfs(1,1,-1); ans=temp; dfs(*(ans.begin()),1,-1); for(set<int>::iterator it=temp.begin();it!=temp.end();it++){ ans.insert(*it); } for(set<int>::iterator it=ans.begin();it!=ans.end();it++){ printf("%d\n",*it); } }}
0 0
- 【PAT甲级】1021. Deepest Root (25)
- PAT甲级练习1021. Deepest Root (25)
- 1021. Deepest Root (25) PAT 甲级
- PAT甲级1021. Deepest Root (25)
- PAT 甲级 1021. Deepest Root (25)
- PAT 甲级1021. Deepest Root (25)
- [PAT-甲级]1021.Deepest Root
- PAT 甲级 Deepest Root (25)
- PAT甲级练习题A1021. Deepest Root (25)
- 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)
- java面向对象三大特性-封装
- SQL高级 第六章 7 储存过程
- S2 一本书 Day07课后题2-4
- 《JavaScript DOM 编程艺术2》 笔记摘抄
- tcp窗口滑动以及拥塞控制
- 1021. Deepest Root (25) PAT 甲级
- 【前端】-Dom
- android coordinatorLayout 使用简介
- Android studio 升级2.2 之后 Maven插件不能使用解决
- Java集合删除元素ArrayList为例子分析
- LeetCode--6
- C语言学习------2.1数组
- fragment
- s2第一本书第九章