AT_abc021_c.[ABC021C] 正直者の高橋くん

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你和高桥君住在 AtCoder 王国。AtCoder 王国有 NN 个城镇,以及 MM 条连接城镇之间的道路,这些道路都是双向通行的。NN 个城镇分别被称为城镇 11、城镇 22、……、城镇 NN。MM 条道路分别被称为道路 11、道路 22、……、道路 MM。

高桥君决定去你家玩。他从城镇 aa 出发,经过 AtCoder 王国中的若干个城镇(可以是 00 个),最终到达你家所在的城镇 bb。

高桥君声称他走的是最短路径。高桥君很诚实,绝不会说谎。

于是,你决定统计一下从城镇 aa 到城镇 bb 的最短路径有多少条。由于答案可能非常大,请输出答案对 1,000,000,007(=109+7)1,000,000,007(=10^9+7) 取模后的结果。

从城镇 aa 到城镇 bb 的最短路径,指的是在所有从 aa 到 bb 的路径中,经过道路的次数最少的那种路径。

输入格式

输入将以下述格式从标准输入给出。

NN aa bb MM x1x_1 y1y_1 x2x_2 y2y_2 : xMx_M yMy_M

  • 第 11 行给出 AtCoder 王国中城镇的个数 NN,满足 2≤N≤1002 \leq N \leq 100。
  • 第 22 行给出高桥君出发的城镇和你家所在的城镇编号 a,ba, b,满足 1≤a,b≤N1 \leq a, b \leq N,a≠ba \neq b,以空格分隔。
  • 第 33 行给出 AtCoder 王国中道路的个数 MM,满足 1≤M≤2001 \leq M \leq 200。
  • 接下来的 MM 行,每行给出一条道路连接的两个城镇的编号 xi,yix_i, y_i,满足 1≤xi,yi≤N1 \leq x_i, y_i \leq N,xi≠yix_i \neq y_i,以空格分隔。
  • 任意两个城镇之间都可以通过若干条道路互相到达。

输出格式

输出一行,从城镇 aa 到城镇 bb 的最短路径的条数,对 1,000,000,0071,000,000,007 取模后的结果。

请不要忘记输出末尾的换行符。

输入输出样例

  • 输入#1

    7
    1 7
    8
    1 2
    1 3
    4 2
    4 3
    4 5
    4 6
    7 5
    7 6

    输出#1

    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

说明/提示

样例解释 1

对于这个输入样例,图如下所示,存在如下 44 条最短路径:

  • 1→2→4→5→71 \to 2 \to 4 \to 5 \to 7
  • 1→3→4→5→71 \to 3 \to 4 \to 5 \to 7
  • 1→2→4→6→71 \to 2 \to 4 \to 6 \to 7
  • 1→3→4→6→71 \to 3 \to 4 \to 6 \to 7

样例解释 2

对于这个输入样例,图如下所示。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页