U213456 [GDOI2022 普及组] 网页浏览(有数据)
题目描述
我们在上网时,从一个网页上的链接打开另一个网页有两种方式,一个是直接替换正在浏览的页面,另一个是在新标签页中打开。如果善用这两种打开方式,是可以节省一些操作的。
今天 $\rm Zayin$ 需要浏览 $n$ 个网页,其中有且仅有一个网页是保存在本地可以点击打开的,其他 $n-1$ 个网页都是需要从某个页面的链接里打开的。因此,这 $n$ 个网页的链接关系可以用一棵 $n$ 个节点的有根树表示。
一开始,浏览器里什么标签页也没有,$\rm Zayin$ 可以点击根节点代表的网页,打开第一个标签页,接下来,$\rm Zayin$ 可以做如下的事情:
- 从当前浏览的网页所含有的链接里选择一个打开,直接替换当前的网页;
- 从当前浏览的网页所含有的链接里选择一个,在新标签页中打开;
- 点击“返回”,当前网页返回被其替换的网页,该操作只能用于“替换打开”的网页;
- 关闭当前网页。
$\rm Zayin$ 可以自行决定浏览顺序。求 $\rm Zayin$ 从空浏览器开始,到最后浏览完全部 $n$ 个网页并全部关闭回到
空浏览器的状态,最少需要多少步操作。
输入格式
第一行一个整数 $n$,表示需要浏览的网页的数量。
第二行 $n$ 个整数,第 $i$ 个整数 $f_i$ 表示第 $i$ 个网页是从哪个网页跳转过来的,如果 $f_i = −1$ 则表示该网
页是根网页,需要在初始时点击打开。
输出格式
一行,一个整数,表示最少的操作步数。
说明/提示
#### 样例解释
|步骤|操作|浏览器拥有的页面|
|:-:|:-:|:-:|
|$1$|点击打开 $1$ 号网页|$1$|
|$2$|从 $1$ 号网页新标签页打开 $2$ 号网页|$1,2$|
|$3$|从 $2$ 号网页替换打开 $3$ 号网页|$1,3$|
|$4$|关闭 $3$ 号网页|$1$|
|$5$|从 $1$ 号网页替换打开 $4$ 号网页|$4$|
|$6$|从 $4$ 号网页替换打开 $5$ 号网页|$5$|
|$7$|关闭 $5$ 号网页|无|
#### 数据范围
|测试点|$n\leq$|特殊限制|
|:-:|:-:|:-:|
|$1\sim 3$|$7$|无|
|$4$|$10^5$|$f_1=-1$,其余 $f_i=i-1$|
|$5$|$10^5$|$f_1=-1$,其余 $f_i=1$|
|$6\sim 7$|$10^5$|每个节点最多有 $5$ 个子节点|
|$8\sim 10$|$10^5$|无|