#abc021c. [abc021_c]正直者の高橋くん
[abc021_c]正直者の高橋くん
问题描述
你和高桥君住在AtCoder王国。AtCoder王国有N个城镇和M条道路,它们可以双向移动。 N个城镇分别称为城镇1、城镇2、...、城镇N。另外,M条道路分别称为道路1、道路2、...、道路M。
高桥君决定去你家玩。高桥君从城镇a出发,经过AtCoder王国的一些城镇(可以是0个),最后到达城镇b,即你的家。
高桥君声称自己走了最短路径。高桥君很诚实,所以绝对不会撒谎。
因此,你决定计算从城镇a到城镇b的最短路径有多少种。由于答案可能非常大,所以请输出实际答案除以的余数。
从城镇a到城镇b的最短路径指的是在城镇a到城镇b的移动路径中,经过最少道路次数的路径。
输入
输入从标准输入给出,具体格式如下:
:
- 第1行是一个整数N(2≦N≦100),表示AtCoder王国中存在的城镇数量。
- 第2行是两个整数a和b(1≦a,b≦N,a≠b),用空格分隔,表示高桥君出发的城镇和你的家所在的城镇的编号。
- 第3行是一个整数M(1≦M≦200),表示AtCoder王国中存在的道路数量。
- 第4行到第M行,每行给出一条道路的信息。对于第i(1≦i≦M)行,用空格分隔,给出道路i连接的两个城镇的编号和(1≦≦N,)。
- 任意两个城镇之间可以通过若干条道路到达。
输出
输出到标准输出,以除以的余数形式表示从城镇a到城镇b的最短路径数量。
请注意输出结尾的换行符。
输入示例1
7
1 7
8
1 2
1 3
4 2
4 3
4 5
4 6
7 5
7 6
输出示例1
4
对于这个输入示例,以下是对应的图形,可以考虑以下4种最短路径:
输入示例2
7
1 7
9
1 2
1 3
4 2
4 3
4 5
4 6
7 5
7 6
4 7
输出示例2
2
对于这个输入示例,以下是对应的图形: