結果

問題 No.1477 Lamps on Graph
ユーザー 学ぶマン
提出日時 2025-09-29 21:23:36
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 295 ms / 2,000 ms
コード長 1,032 bytes
コンパイル時間 474 ms
コンパイル使用メモリ 82,640 KB
実行使用メモリ 116,844 KB
最終ジャッジ日時 2025-09-29 21:23:57
合計ジャッジ時間 11,730 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 38
権限があれば一括ダウンロードができます

ソースコード

diff #

N, M = map(int, input().split())
A = list(map(int, input().split()))
G = [list() for _ in range(N)]
indeg = [0]*N
for i in range(M):
    u, v = map(int, input().split())
    u -= 1
    v -= 1
    # u, v のスコア比較
    # 小さい方から大きい方
    if A[u] < A[v]:
        G[u].append(v)
        indeg[v] += 1
    elif A[u] > A[v]:
        G[v].append(u)
        indeg[u] += 1

K = int(input())
B = list(map(int, input().split()))

lights = [0]*N
for b in B:
    b -= 1
    lights[b] = 1

# indeg が 0 のものから処理
indegzero = []
for i in range(N):
    if indeg[i] == 0:
        indegzero.append(i)

ansl = []
while indegzero:
    pos = indegzero.pop()
    
    # pos を削除する
    for nex in G[pos]:
        if lights[pos] == 1:
            lights[nex] ^= 1
        # nex の indeg を1減らす
        indeg[nex] -= 1
        if indeg[nex] == 0:
            indegzero.append(nex)

    if lights[pos] == 1:
        ansl.append(pos + 1)
        lights[pos] = 0

print(len(ansl))
print(*ansl, sep='\n')
0