#NH4718. NH.2005.中学组.06.开拓者

NH.2005.中学组.06.开拓者

题目描述

你被一家著名的游戏开发公司雇佣,参与开发一个游戏叫 “Catan开拓者” ,玩游戏的人可以在荒野上建筑公路、岛屿、城市等。公司决定让你开发这个游戏里的一个模块。这个模块的作用是,修建最长路段的游戏者会赢得该回合的胜利。

现在你的问题是,游戏者通常建筑的是复杂的路网,并不仅仅是直线型的路径。因此,判断最长的路段并不是一件不起眼的小事(尽管玩游戏的人通常一眼就能看出)。

与原来的游戏相比,这里我们要解决一个已经简单化的问题:已给你一系列的结点(城市)和一系列连接结点的长度为单位1的边界(表示路的线段)。最长的路定义为,在路网里最长的路径,但每个边界只能通过一次。当然,每个结点可以通过若干次。

例如,下面的网状结构里包含一个长为 12 的路段。

img

输入格式

包含多组测试数据。

每组测试数据第一行包含 2 个整数:结点数 n ( 2 <= n <= 25 ),和边界数 m ( 1 <= m <= 25 )。下面 m 行描述 m 个边界。每一个给出的边界是由两个结点连接而成的。结点编号从 0到 n-1。边界方向不受限制。即方向任意。每个结点至多能用 3 次。整个路网不必全部连接起来。

当 n , m 都赋值为 0 时,输入结束。

输出格式

每个测试点最长的路段的长度。一行一个答案。

样例

3 2
0 1
1 2
15 16
0 2
1 2
2 3
3 4
3 5
4 6
5 7
6 8
7 8
7 9
8 10
9 11
10 12
11 12
10 13
12 14
0 0
2
12