QOJ.ac

QOJ

Límite de tiempo: 4 s Límite de memoria: 1024 MB Puntuación total: 100

#14868. 故障的闪烁灯

Estadísticas

最近,你的汽车进行了一次软件更新。现在,如果你使用转向灯次数过多,汽车就会关闭,并报告“缓冲区溢出”(buffer overflow),不管这意味着什么!不过好的一面是,你现在可以去参加“报废汽车保护大会”(Broken-down Automobile Preservation Convention, BAPC)了。

你得知这个消息太晚了,所以你必须尽快开车赶到那里!当然,你仍然必须遵守所有的交通规则。在每个交叉路口,无论该路口是否在所有方向上都有道路,你都必须遵守以下规则:

  • 在交叉路口左转(或右转)时,必须开启左(或右)转向灯。
  • 直行时,转向灯必须关闭。
  • 不允许掉头,即你不能沿着来时的路往回开。

为了安全起见,你决定最多开启转向灯 $k$ 次。幸运的是,你仍然可以随时关闭它们。这看起来限制很大,但你做出了一个精明的观察:只要你保持转向灯开启(它们不会自动关闭),你就可以一直向同一个方向转弯。

道路网络由交叉路口以及连接它们的道路组成。道路总是从东、南、西、北四个基本方向之一开始和结束。此外,它们绝不会在同一个交叉路口开始和结束。例如,考虑样例 1 到 3,其可视化效果如图 B.1 所示。这些样例仅在 $k$ 的值上有所不同。

图 B.1:第一、第二和第三个样例输入的视觉表示。

为了简化导航,你假设通过每条道路所需的时间相同,即每条道路的长度都视为 1。请找出从你当前位置到 BAPC 的最短路线,并确保你开启转向灯的次数不超过 $k$ 次。从你当前的位置出发时,你可以向任何方向行驶,而无需使用转向灯。

输入格式

输入包含以下内容:

  • 第一行包含两个整数 $n$ 和 $k$ ($1 \le n \le 5000$, $0 \le k \le 20$),分别表示交叉路口的数量以及转向灯可以开启的最大次数。
  • 接下来的 $n$ 行,其中第 $i$ 行包含四个整数 $v^n_i$、$v^e_i$、$v^s_i$ 和 $v^w_i$ ($0 \le v^n_i, v^e_i, v^s_i, v^w_i \le n$),分别表示从交叉路口 $i$ 向北、向东、向南和向西行驶所能到达的交叉路口编号,若为 0 则表示该方向没有道路。

你从交叉路口 1 出发,BAPC 位于交叉路口 $n$。每个交叉路口 $i$ 到任何其他交叉路口 $j$ 最多只有一条道路。如果这条道路存在,那么交叉路口 $j$ 到交叉路口 $i$ 也恰好有一条道路。

输出格式

如果可以从交叉路口 1 行驶到 $n$,且开启转向灯的次数不超过 $k$ 次,则输出该最短路线的长度。否则,输出 “impossible”。

样例

输入样例 1

5 2
0 2 0 0
4 0 3 1
0 4 2 0
0 5 2 3
0 0 0 4

输出样例 1

3

输入样例 2

5 1
0 2 0 0
4 0 3 1
0 4 2 0
0 5 2 3
0 0 0 4

输出样例 2

4

输入样例 3

5 0
0 2 0 0
4 0 3 1
0 4 2 0
0 5 2 3
0 0 0 4

输出样例 3

impossible

输入样例 4

5 2
0 2 0 0
4 0 3 1
0 4 2 0
0 0 2 3
0 0 0 0

输出样例 4

impossible

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.