一个连通的无环图可以看做是一棵树,但选定不同的结点作为根的话,树的结构会不同,树的高度也会不一样,现在需要你找到能形成最高树的根,也就是最深根。

输入格式:
首先在第一行给出结点的数目N,N小于10000,结点从1开始编号,随后N-1行,依次给出N-1条边。

输出格式:
对每一组输入,输出最深根的编号,如果有多个,则按从小到大的顺序输出,每行输出一个。如果不能构成树,则统计图有多少个连通块,输出“Error: K components”,其中K是连通块的数目。

输入样例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<algorithm>
#include<vector>
#include<map>
#include<cstring>
using namespace std;
vector<int>st[10005];
int vis[10005];
int dp[10005];
map<int,int>mp;
int maxx = -1;
int maxn = -1;
int n,ans;void dfs(int x,int len){vis[x]=1;if(len>maxx){maxx=len;}if(maxx>maxn){maxn=maxx;}for(int i=0;i<st[x].size();i++){if(!vis[st[x][i]])dfs(st[x][i],len+1);}
}
void graph(int x){vis[x]=1;for(int i=0;i<st[x].size();i++){if(!vis[st[x][i]])graph(st[x][i]);}
}
int main ()
{scanf("%d",&n);for(int i=1;i<n;i++){int a,b;scanf("%d %d",&a,&b);st[a].push_back(b);st[b].push_back(a);mp[a]++;mp[b]++;}for(int i=1;i<=n;i++){if(!vis[i]){graph(i);ans++;}}if(ans>1){printf("Error: %d components\n",ans);return 0;}for(int i=1;i<=n;i++){if(mp[i]==1){maxx=-1;memset(vis,0,sizeof(vis));dfs(i,0);dp[i]=maxx;}  }for(int i=1;i<=n;i++){if(dp[i]==maxn)printf("%d\n",i);}return 0;
}

图中最深的根 (25分)相关推荐

  1. 7-4 统计Java程序中关键词的出现次数 (25 分)

    ** 7-4 统计Java程序中关键词的出现次数 (25 分) ** 编写程序统计一个输入的Java源码中关键字(区分大小写)出现的次数.说明如下: Java中共有53个关键字(自行百度) 从键盘输入 ...

  2. 7-72 功夫传人 (25 分)(深搜)

    7-72 功夫传人 (25 分) 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特 ...

  3. 前序中序确认二叉树 7-23 还原二叉树(25 分)

    7-23 还原二叉树(25 分) 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度. 输入格式: 输入首先给出正整数N(≤50),为树中结点总数.下面两行先后给出先序和中序遍历序列, ...

  4. 堆中的路径 (25 分)

    7-17 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤1000) ...

  5. 7-3 堆中的路径 (25 分)

    7-3 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤1000), ...

  6. 【PTA天梯赛CCCC -2017决赛L2-3】图着色问题 (25 分)(图染色)

    题干: L2-3 图着色问题 (25 分) 图着色问题是一个著名的NP完全问题.给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题 ...

  7. 【CCCC】L2-031 深入虎穴 (25分),,求多叉树最深的节点编号,大水题!!!

    problem L2-031 深入虎穴 (25分) 著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一 ...

  8. 【CCCC】L2-025 分而治之 (25分),图的度数,使节点独立的方案

    problem L2-025 分而治之 (25分) 分而治之,各个击破是兵家常用的策略之一.在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破.为此参谋部提供了若 ...

  9. 【CCCC】L2-023 图着色问题 (25分),,图的染色判定,遍历

    problem L2-023 图着色问题 (25分) 图着色问题是一个著名的NP完全问题.给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色 ...

  10. 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)

    problem L2-006 树的遍历 (25分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30), ...

最新文章

  1. AS3.0编程 So本地数据存储(“超级cookies”)--AS3:Local SharedObject
  2. java.net.SocketException四大异常解决方案
  3. Python中单个下划线“ _”变量的用途是什么?
  4. [设计模式]工厂模式factory
  5. pl/sql编程基础
  6. 安卓手机中 P 的输入
  7. MFC 自定义消息四步曲与在参数中传递变量
  8. C# 中 FindControl 方法及使用
  9. UITableView 性能优化
  10. SpringBoot+EHcache实现缓存
  11. ajaxGet 获取封装
  12. 总结-linux初识进程(包括cpu调度、进程创建、僵尸进程(重点)、环境变量)
  13. 【操作系统笔记】中断系统
  14. Loopback、Null0接口揭秘
  15. day 21 模块 和 包
  16. 路由器显示DNS服务器异常,路由器dns异常怎么办
  17. springboot自定义启动logo
  18. 图像空间域和频域的分析
  19. SAP ABAP 取物料号的采购订单文本内容
  20. AtCoder Beginner Contest 190 D - Staircase Sequences

热门文章

  1. 金山打字专业文章计算机,练打字试卷_推荐几篇适合学生练习打字的文章_淘题吧...
  2. 金融产品经理的新方向:供应链金融
  3. 七夕将至,20行js代码给女友做个卡通P图微信机器人
  4. 如何设定合理的安全工作指标
  5. Qt Creator插件ToDo
  6. 网盘目录搜索系统源码+搭建教程
  7. STM32F103_study69_The punctual atoms(STM32 SPI communication principle and configuration)
  8. excel表格斜线_老中医坐诊,专治Word表格各种不服
  9. 微信怎么更新最新版本?两招搞定,别轻易卸载!
  10. Juniper防火墙之ICMP-Ping