#P0374. 星际漫游
星际漫游
题目描述
在遥远的宇宙深处,有一个由古老文明建造的星际水晶网络。这个网络由无数的水晶节点(顶点)和它们之间的水晶通道(边)构成,是连接整个星系的关键。每个节点都有可能拥有一个神秘的装置——水晶开关(开关),能够控制通道的能量流动。
在一次探险中,你发现了这个星际水晶网络,并得知在网络的另一端隐藏着一个传说中的宝物——水晶之心,它拥有无尽的能量。作为一名星际探险家,你决定踏上寻找水晶之心的旅程。
你从网络的起始节点( 号点)出发,目标是到达网络的终点( 号点)。网络中的每条水晶通道都有两个状态:激活(通行可能)和未激活(通行不能)。你可以通过步行(移动)或使用水晶开关(按开关)来改变通道的状态。
- 移动:你可以移动到相邻的节点,前提是通道是激活状态。
- 按开关:如果当前节点有水晶开关,你可以激活它,这将反转所有通道的状态。
你的任务是确定是否能够到达 号点,并计算出最少需要步行的次数。能够到达N号点,并计算出最少需要步行的次数。
输入描述
第一行三个数 。
接下来 行,每行三个数 表示一条连接 与 的边。 代表无法通过, 代表可以通过。
最后一行 个数,表示按钮的位置。
输出描述
如果无法到达,输出 。否则输出最少移动次数。
样例
5 5 2
1 3 0
2 3 1
5 4 1
2 1 1
1 4 0
3 4
5
样例解释
- 从顶点 移动到顶点 。
- 从顶点 移动到顶点 。
- 在顶点 按下开关。这会反转图中每条边的可通行性。
- 从顶点 移动到顶点 。
- 从顶点 移动到顶点 。
- 在顶点 按下开关。这再次反转图中每条边的可通行性。
- 从顶点 移动到顶点 。
数据范围
,,。
保证 ,且 。
保证 。