結果

問題 No.762 PDCAパス
ユーザー tails1434tails1434
提出日時 2020-01-15 07:25:33
言語 PyPy3
(7.3.1)
結果
AC  
実行時間 335 ms / 2,000 ms
コード長 1,279 Byte
コンパイル時間 323 ms
使用メモリ 82,048 KB
最終ジャッジ日時 2020-07-21 19:18:08

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
testcase_00 AC 115 ms
67,320 KB
testcase_01 AC 115 ms
67,320 KB
testcase_02 AC 115 ms
67,316 KB
testcase_03 AC 114 ms
67,328 KB
testcase_04 AC 114 ms
67,316 KB
testcase_05 AC 114 ms
67,316 KB
testcase_06 AC 113 ms
67,316 KB
testcase_07 AC 113 ms
67,320 KB
testcase_08 AC 113 ms
67,316 KB
testcase_09 AC 123 ms
67,316 KB
testcase_10 AC 114 ms
67,324 KB
testcase_11 AC 116 ms
67,316 KB
testcase_12 AC 115 ms
67,316 KB
testcase_13 AC 115 ms
67,320 KB
testcase_14 AC 114 ms
67,312 KB
testcase_15 AC 115 ms
67,324 KB
testcase_16 AC 115 ms
67,320 KB
testcase_17 AC 115 ms
67,320 KB
testcase_18 AC 117 ms
67,324 KB
testcase_19 AC 120 ms
67,320 KB
testcase_20 AC 116 ms
67,324 KB
testcase_21 AC 116 ms
67,320 KB
testcase_22 AC 320 ms
69,800 KB
testcase_23 AC 226 ms
69,792 KB
testcase_24 AC 288 ms
81,876 KB
testcase_25 AC 274 ms
82,048 KB
testcase_26 AC 210 ms
69,900 KB
testcase_27 AC 215 ms
69,900 KB
testcase_28 AC 335 ms
79,524 KB
testcase_29 AC 317 ms
79,484 KB
testcase_30 AC 330 ms
77,128 KB
testcase_31 AC 311 ms
77,044 KB
testcase_32 AC 311 ms
77,272 KB
testcase_33 AC 323 ms
74,996 KB
testcase_34 AC 314 ms
75,524 KB
testcase_35 AC 315 ms
75,188 KB
testcase_36 AC 288 ms
71,576 KB
testcase_37 AC 279 ms
71,480 KB
testcase_38 AC 276 ms
72,068 KB
testcase_39 AC 279 ms
71,856 KB
testcase_40 AC 285 ms
72,072 KB
権限があれば一括ダウンロードができます

ソースコード

diff #
import sys
input = sys.stdin.readline

def main():
    N, M = map(int, input().split())
    S = input()
    d = [[] for _ in range(N)]
    MOD = 10 ** 9 + 7
    for _ in range(M):
        u, v = map(int, input().split())
        u -= 1
        v -= 1
        if S[u] == 'P' and S[v] == 'D':
            d[u].append(v)
        if S[u] == 'D' and S[v] == 'C':
            d[u].append(v)
        if S[u] == 'C' and S[v] == 'A':
            d[u].append(v)
        if S[v] == 'P' and S[u] == 'D':
            d[v].append(u)
        if S[v] == 'D' and S[u] == 'C':
            d[v].append(u)
        if S[v] == 'C' and S[u] == 'A':
            d[v].append(u)
    
    dp = [[0] * N for _ in range(4)]

    for i in range(N):
        if S[i] == 'P':
            dp[0][i] = 1
    
    for u in range(N):
        for v in d[u]:
            if S[v] == 'D':
                dp[1][v] += dp[0][u]
                dp[1][v] %= MOD
    
    for u in range(N):
        for v in d[u]:
            if S[v] == 'C':
                dp[2][v] += dp[1][u]
                dp[2][v] %= MOD
    
    for u in range(N):
        for v in d[u]:
            if S[v] == 'A':
                dp[3][v] += dp[2][u]
                dp[3][v] %= MOD

    print(sum(dp[3]) % MOD)

if __name__ == "__main__":
    main()
0