一、题目描述
一张地图上有N个城市,城市和城市之间有且只有一条道路相连,要么直接相连,要么通过其他城市中转相连(可中转一次或多次)。城市与城市之间的道路都不会成环。
当切断通往某城市i的所有道路后,地图上将分成多个连通的城市群,设该城市i的聚集度为DPi of Polymerization), DPi = max(城市群1的城市个数,城市群2的城市个数,…城市群m的城市个数)。 请找出地图上DP值最小的城市(即找到城市j,使得DPj = min(DP1,DP2…DPn))。
提示:如果有多个城市都满足条件,这些城市都要找出来(可能存在多个解)。
提示:DPi的计算,可以理解为已知一个树,删除某个节点后,生成的多个字树,求解多个字树节点数的问题。
二、输入描述
每个样例,第一行有一个整数N,表示有N个节点,1 <=N <=1000
j接下来的N-1行每行有两个整数x,y,表示城市x与城市y连接。1 <= x , y <= N
三、输出描述
输出城市的编号,如果有多个,按照编号升序输出。
四、测试用例
测试用例1:
1、输入
4
1 2
2 3
2 4
2、输出
2
3、说明
删除城市2
本文详细介绍了华为在线测评(OD)中的一道编程题,涉及Java解法。题目要求找到一座城市,当其所有连接被切断后,导致的地图最大连通块的大小最小。解题思路包括利用并查集处理图的连通性,并求解最小的最大连通块。Java算法源码和效果展示也在文中给出。
订阅专栏 解锁全文
1017

被折叠的 条评论
为什么被折叠?



