Submission #6416533


Source Code Expand

#!/usr/bin/env python3
#ABC21 C
#ダイクストラ法

from collections import deque
from heapq import heappush, heappop

mod = 10**9 + 7

def dijkstra():
    #startノードからの最短距離のリスト
    #初期ノードは0,それ以外は無限大で初期化
    distance = [float('inf') for _ in range(n)]
    distance[a] = 0
    #startノードをqueueに入れる
    que = [[0,a]]
    #startから各ノードへの最短経路の数のリスト
    #startノードへの最短経路は1つ
    ans = [0]*n
    ans[a] = 1
    #未探索のノードがあるなら
    while que:
        #優先度(距離)が最小であるqueueを取り出す
        #dx:= startからの距離,x:= ノード
        dx,x = heappop(que)
        #y:= 取り出したノード(x)と辺でつながっているノード
        for y in edge[x]:
            #まだそのノード(y)を見ていないとき
            #startからyまでの距離をdx + 1にする
            if distance[y] > dx + 1:
                distance[y] = dx + 1
                #yまでの最短経路数はxまでの最短経路数と同じ
                ans[y] = ans[x]
                #まだ見ていなかったのでqueueに入れる
                heappush(que,[distance[y],y])
            #一度見ており、1回目とは違うノード(x)からそのノード(y)を見たとき
            #(1回目とノードは違うが、最短距離は同じノード)
            elif distance[y] == dx + 1:
                #yまでの最短経路にxからの経路を加える
                ans[y] += ans[x]
    return ans
n = int(input())
a,b = map(int,input().split())
a -= 1
b -= 1
m = int(input())
xy = [list(map(int,input().split())) for _ in range(m)]
edge = [[] for _ in range(n)]
for x,y in xy:
    edge[x-1].append(y-1)
    edge[y-1].append(x-1)
ans = dijkstra()
print(ans[b] % mod)

Submission Info

Submission Time
Task C - 正直者の高橋くん
User nrkt
Language PyPy3 (2.4.0)
Score 100
Code Size 1930 Byte
Status AC
Exec Time 170 ms
Memory 38384 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 2
AC × 32
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 164 ms 38384 KB
subtask0_sample_02.txt AC 162 ms 38256 KB
subtask1_01.txt AC 165 ms 38256 KB
subtask1_02.txt AC 166 ms 38256 KB
subtask1_03.txt AC 162 ms 38256 KB
subtask1_04.txt AC 166 ms 38256 KB
subtask1_05.txt AC 166 ms 38256 KB
subtask1_06.txt AC 162 ms 38256 KB
subtask1_07.txt AC 164 ms 38256 KB
subtask1_08.txt AC 164 ms 38256 KB
subtask1_09.txt AC 165 ms 38256 KB
subtask1_10.txt AC 166 ms 38256 KB
subtask1_11.txt AC 166 ms 38256 KB
subtask1_12.txt AC 165 ms 38256 KB
subtask1_13.txt AC 166 ms 38256 KB
subtask1_14.txt AC 165 ms 38256 KB
subtask1_15.txt AC 166 ms 38256 KB
subtask1_16.txt AC 167 ms 38256 KB
subtask1_17.txt AC 166 ms 38256 KB
subtask1_18.txt AC 165 ms 38256 KB
subtask1_19.txt AC 170 ms 38256 KB
subtask1_20.txt AC 169 ms 38256 KB
subtask1_21.txt AC 169 ms 38256 KB
subtask1_22.txt AC 166 ms 38256 KB
subtask1_23.txt AC 165 ms 38256 KB
subtask1_24.txt AC 167 ms 38256 KB
subtask1_25.txt AC 166 ms 38256 KB
subtask1_26.txt AC 166 ms 38384 KB
subtask1_27.txt AC 165 ms 38256 KB
subtask1_28.txt AC 169 ms 38256 KB
subtask1_29.txt AC 164 ms 38256 KB
subtask1_30.txt AC 162 ms 38256 KB