图中最深的根 (25分)
一个连通的无环图可以看做是一棵树,但选定不同的结点作为根的话,树的结构会不同,树的高度也会不一样,现在需要你找到能形成最高树的根,也就是最深根。
输入格式:
首先在第一行给出结点的数目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分)相关推荐
- 7-4 统计Java程序中关键词的出现次数 (25 分)
** 7-4 统计Java程序中关键词的出现次数 (25 分) ** 编写程序统计一个输入的Java源码中关键字(区分大小写)出现的次数.说明如下: Java中共有53个关键字(自行百度) 从键盘输入 ...
- 7-72 功夫传人 (25 分)(深搜)
7-72 功夫传人 (25 分) 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特 ...
- 前序中序确认二叉树 7-23 还原二叉树(25 分)
7-23 还原二叉树(25 分) 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度. 输入格式: 输入首先给出正整数N(≤50),为树中结点总数.下面两行先后给出先序和中序遍历序列, ...
- 堆中的路径 (25 分)
7-17 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤1000) ...
- 7-3 堆中的路径 (25 分)
7-3 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤1000), ...
- 【PTA天梯赛CCCC -2017决赛L2-3】图着色问题 (25 分)(图染色)
题干: L2-3 图着色问题 (25 分) 图着色问题是一个著名的NP完全问题.给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题 ...
- 【CCCC】L2-031 深入虎穴 (25分),,求多叉树最深的节点编号,大水题!!!
problem L2-031 深入虎穴 (25分) 著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一 ...
- 【CCCC】L2-025 分而治之 (25分),图的度数,使节点独立的方案
problem L2-025 分而治之 (25分) 分而治之,各个击破是兵家常用的策略之一.在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破.为此参谋部提供了若 ...
- 【CCCC】L2-023 图着色问题 (25分),,图的染色判定,遍历
problem L2-023 图着色问题 (25分) 图着色问题是一个著名的NP完全问题.给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色 ...
- 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)
problem L2-006 树的遍历 (25分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30), ...
最新文章
- AS3.0编程 So本地数据存储(“超级cookies”)--AS3:Local SharedObject
- java.net.SocketException四大异常解决方案
- Python中单个下划线“ _”变量的用途是什么?
- [设计模式]工厂模式factory
- pl/sql编程基础
- 安卓手机中 P 的输入
- MFC 自定义消息四步曲与在参数中传递变量
- C# 中 FindControl 方法及使用
- UITableView 性能优化
- SpringBoot+EHcache实现缓存
- ajaxGet 获取封装
- 总结-linux初识进程(包括cpu调度、进程创建、僵尸进程(重点)、环境变量)
- 【操作系统笔记】中断系统
- Loopback、Null0接口揭秘
- day 21 模块 和 包
- 路由器显示DNS服务器异常,路由器dns异常怎么办
- springboot自定义启动logo
- 图像空间域和频域的分析
- SAP ABAP 取物料号的采购订单文本内容
- AtCoder Beginner Contest 190 D - Staircase Sequences
热门文章
- 金山打字专业文章计算机,练打字试卷_推荐几篇适合学生练习打字的文章_淘题吧...
- 金融产品经理的新方向:供应链金融
- 七夕将至,20行js代码给女友做个卡通P图微信机器人
- 如何设定合理的安全工作指标
- Qt Creator插件ToDo
- 网盘目录搜索系统源码+搭建教程
- STM32F103_study69_The punctual atoms(STM32 SPI communication principle and configuration)
- excel表格斜线_老中医坐诊,专治Word表格各种不服
- 微信怎么更新最新版本?两招搞定,别轻易卸载!
- Juniper防火墙之ICMP-Ping