题目:POJ2631
题意: 大致就是村庄之间修路,从一个村庄到另一个村庄只有一条路,而不经过其他一些村庄两次。有若干村庄和道路,其中任何村庄都可以通过公路从任何其他村庄到达。就是让找出该地区两个最偏远村庄之间的公路距离。这些村庄从1开始编号。
题解: 这个就是求树的直径的模板题,两遍BFS即可,第一遍,从任意一个点遍历,记录最远的那个村庄,然后第二遍从第一遍找到的那个最远村庄为起点进行遍历,这样得到的就是两个最偏远地区的距离,即树的直径,本来想用邻接矩阵(浪费空间)存图,题目提到有多达1万条路,所以我选择了邻接表存数据。如果是初学者话,估计这个邻接表不太好理解,我尽可能用通俗的语言让大家理解
AC代码如下:
1 |
|