結果
| 問題 | No.762 PDCAパス | 
| コンテスト | |
| ユーザー |  matsu7874 | 
| 提出日時 | 2018-11-28 01:47:28 | 
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 641 ms / 2,000 ms | 
| コード長 | 730 bytes | 
| コンパイル時間 | 567 ms | 
| コンパイル使用メモリ | 12,544 KB | 
| 実行使用メモリ | 32,128 KB | 
| 最終ジャッジ日時 | 2024-06-25 02:12:27 | 
| 合計ジャッジ時間 | 12,503 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 38 | 
ソースコード
mod = 10**9 + 7
n, m = map(int, input().split())
assert 2 <= n <= 10**5
assert 0 <= m <= 10**5
s = input()
assert len(s) == n
assert all(c in 'PCDA' for c in s)
graph = [[] for i in range(n)]
for _ in range(m):
    u, v = map(int, input().split())
    assert 1 <= u < v <= n
    graph[u - 1].append(v - 1)
    graph[v - 1].append(u - 1)
nodes = {c: [] for c in 'PDCA'}
pre = {
    'D': 'P',
    'C': 'D',
    'A': 'C',
}
for i in range(n):
    nodes[s[i]].append(i)
cnt = [1 if s[i] == 'P' else 0 for i in range(n)]
for c in 'DCA':
    for v in nodes[c]:
        for u in graph[v]:
            if s[u] == pre[c]:
                cnt[v] += cnt[u]
                cnt[v] %= mod
print(sum([cnt[v] for v in nodes['A']]) % mod)
            
            
            
        