T173337 未解之谜
题目背景
**这是一道交互题**
珂愛是一个爱探险的女孩子。
题目描述
鱼人节到了,珂愛在一个山洞里寻宝,但她迷路了。她现在想要走出去。
山洞很大,洞里有 $2^n-1$ 个洞窟和 $2^{n}-2$ 个连接洞窟的通道。你可以认为山洞是一棵满二叉树,且出口恰好在根结点的位置。
珂愛现在在某一个洞窟里,她知道的信息只有这个洞窟连接着多少条通道,并且她无法做任何标记。
由于在探宝中,珂愛消耗了大量体力,所以她现在最多移动 $150$ 次,如果 $150$ 次内没有到达出口,珂愛就只能使用禁忌的法术把山洞给炸了。
珂愛并不知道该怎么走,因此她使用魔法联系上了你,请你帮她走出山洞。
## 任务介绍
你需要实现一个函数 `Miyafuji`,以帮助珂愛走出山洞。
- `Miyafuji(n,k)`
+ 树的结点个数为 $2^n-1$
+ 珂愛一开始所在的洞窟有 `k` 条通道。
+ 该函数结束时,你需要保证珂愛在根结点。
在每个测试点中,交互库都会调用 $T$ 次 `Miyafuji` 函数。
你可以调用函数 `Yoshika` 来告诉珂愛她的移动方式,但在单次 `Miyafuji` 函数运行时,调用 `Yoshika` 的次数不能超过 $150$。
- `Yoshika(k)`
+ $k$ 表示珂愛下一步走这个洞窟的第 $k$ 条通道。
+ $k\geq 1$ 且不能超过这个洞窟的通道数量。
+ 这个函数会返回珂愛走到的洞窟的通道数量。
在函数 `Miyafuji` 返回之后,交互库会检查状态,只有珂愛到达了根结点,才算目标完成。
保证同一个结点的通道的顺序固定,即从一个点,每次走它的第一条通道,走到的结点一定都是一样的。
## 实现方法
**本题只支持 C++ 语言(含 C++11/C++14/C++17)**。
你需要实现的函数 `Miyafuji`:
```c++
void Miyafuji(int n,int k);
```
函数 `Yoshika` 的接口信息如下(**你应当在程序开头加上这句话,否则会编译错误**):
```c++
int Yoshika(int k);
```
输入格式
**这是交互库的输入格式,选手不需要,也无法从标准输入中读取任何信息**。
第一行一个正整数 $T$ 表示数据组数。
对于每组数据:
第一行一个整数 $n$,表示洞窟个数为 $2^n-1$。
接下来 $2^n-2$ 行,每行两个整数 $u,v$,表示一条通道连接的两个洞窟。
接下来一行一个整数 $d$,表示珂愛一开始在的洞窟编号。
输出格式
**这是交互库的输出格式,选手不需要,也无法向标准输出中写入任何信息**。
对每组数据,输出一行一个整数,表示珂愛走的步数。
说明/提示
对于 $100\%$ 的数据,$1\leq T\leq 100$,$1\leq n\leq 5$。
附件中提供了一个交互程序,可用来自测。实际评测时使用的交互库除了对 IO 进行了一些加密以外,没有任何不同。
附件中还提供了一个样例程序,你可以直接在其上面修改。
你可以在本地使用命令 `g++ -o code code.cpp interactive_lib.cpp` 来编译。