#737. 景点游玩

景点游玩

Description

星期天小明来到动物园游玩,园内共有n个景点,每个景点序号为 0,1,2,3n10,1,2,3 \dots n-1。现在只知道每个景点有一条路连接下一个景点。小明想寻找能游玩景点个数最多的一种方案并且从其中一个景点出发,最后能够回到出发景点。如果游玩的景点个数一样,则优先考虑景点序号小的。

例如,共有 n=5n=5 个景点,每个景点连接的下个景点分别是 1,3,4,4,11,3,4,4,1

方案一:从0号景点出发,则游玩线路为:0号→1号→3号→4号→1号,由于此方案无法回到出发点,则不考虑;

方案二:从1号景点出发,则游玩线路为:1号→3号→4号→1号,然后回到1号景点。最多可以玩3个景点。

现用Python程序模拟这个问题: 先输入景点总数:5;则对应的景点为[0,1,2,3,4] 然后输入各景点所连接的下一个景点的序号,如:[1,3,4,4,1]; 接着产生一个列表,如上表的信息则产生的列表s为:[[0,1],[1,3],[2,4],[3,4],[4,1]], 最后利用链表的方式来分析解决问题。

Format

Input

第一行为景点总数n 第二行为各景点所连接的下一个景点的序号

Output

第一行,表示小明最多能访问的景点数 第二行,表示最多访问景点数的游玩路线

Samples

5
1 3 4 4 1
3
1→3→4
10
8 6 5 4 1 2 0 4 4 5
5
0→8→4→1→6

Limitation

1s, 1024KiB for each test case.