#1052. 寻找秘钥

寻找秘钥

题目描述

Joy来到一个宫殿,宫殿一共有M+1层,在M+1层放着稀世珍宝。 除了最上面一层(M+1层)外,宫殿还有 M 层, 每层 K 个房间,K个房间按照逆时针围成一个圈,并编号为0,1,... ,K-1。有些房间可上楼,有的房间不能。每个房间的门口都贴有一个数字 w, 表示从这个房间开始按逆时针方向选择第w个可以上楼的房间(假定该房间的编号为 d), 从该房间上楼,到达上一层的 d 号房间。 比如当前房间的贴着3,则按逆时针方向开始查找,找到第 3 个可以上楼的房间,从该房间上楼。如果当前房间本身可以上楼,则这个房间就是第一个可以上楼房间。 打开稀世珍宝的秘钥为找到上楼房间门口贴的数字之和。请帮助小明算出这个密钥。

输入格式

第一行 2 个整数 M 和 K,之间用一个空格隔开。 M表示除了顶层外藏宝楼共M 层楼,K 表示除顶层外每层楼有K 个房间。 接下来 M*K 行,每行两个整数,之间用一个空格隔开, 每行描述一个房间内的情况,其中第(i-1)*K+j 行表示第 i 层 j-1 号房间的情况(i=1, 2, …, M; j=1, 2, … ,K)。第一个整数表示该房间是否有楼梯通往上一层(0 表示没有, 1 表示有),第二个整数表示指示牌上的数字。 注意,从 j 号房间的楼梯爬到上一层到达的房间一定也是 j 号房间。 最后一行,一个整数, 表示小明从藏宝楼底层的几号房间进入开始寻宝(注:房间编号从 0 开始)。

输出格式

输出只有一行, 一个整数, 表示打开宝箱的密钥,这个数可能会很大, 请输出对 20123取模的结果即可。

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

提示

【输入输出样例说明】

第一层:

0 号房间,可通往上层,门口贴的数字是 2;

1 号房间,不可通往上层,门口贴的数字是 3;

2 号房间,可通往上层,门口贴的数字是 4;

第二层:

0 号房间,不可通往上层,门口贴的数字是 1;

1 号房间,可通往上层,门口贴的数字是 5;

2 号房间,可通往上层,门口贴的数字是 2;

小明首先进入第一层(底层)的 1 号房间, 记下门口贴的数字为 3,然后从这个房间开始,沿逆时针方向选择第 3 个可的房间 2 号房间进入,上楼后到达第二层的 2 号房间,记下门口贴的数字为 2, 由于当前房间本身可通向上层,该房间作为第一个可的房间。因此,此时沿逆时针方向选择第 2 个可的房间即为 1 号房间,进入后上楼梯到达顶层。这时把上述记下的门口贴的数字加起来,即 3+2=5, 所以打开宝箱的密钥就是 5。

【数据范围】

对于 50%数据,有 0<N≤1000, 0<x≤10000;

对于 100%数据,有 0<N≤10000, 0<M≤100, 0<x≤1,000,000。