結果
| 問題 |
No.2431 Viral Hotel
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-08-18 21:17:16 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,224 bytes |
| コンパイル時間 | 219 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 122,680 KB |
| 最終ジャッジ日時 | 2024-11-28 05:21:09 |
| 合計ジャッジ時間 | 21,872 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 WA * 1 |
| other | AC * 4 WA * 38 |
ソースコード
from heapq import heappush, heappop
N,K,M,P = list(map(int,input().split()))
e_list = [[] for i in range(N)]
for i in range(M):
u,v = list(map(int,input().split()))
u -= 1
v -= 1
e_list[u].append(v)
e_list[v].append(u)
S = [int(input()) for i in range(N)]
state = [0]*N
q = []
def I(t, mode, v):
return t * (10**7) + v + (10**6)*(mode=="viral")
def J(i):
t = i//(10**7)
i -= t*(10**7)
x = i%(10**6)
i -= x
if i==0:
mode = "cure"
else:
mode = "viral"
return t, mode, x
for i in range(K):
x = int(input()) - 1
heappush(q, I(0,"viral",x))
heappush(q, I(P,"cure",x))
while q:
#print(state)
t, st, v = J(heappop(q))
if st == "viral":
if state[v] == 0:
state[v] = 1
for v1 in e_list[v]:
if state[v1] <= 1:
heappush(q, I(t + S[v], "viral", v1))
heappush(q, I(t + S[v] + P, "cure", v1))
elif state[v] == 1:
state[v] = 2
elif state[v] >= 2:
pass
else:
if state[v] == 1:
state[v] = 3
#print(state)
count = 0
for i in range(N):
if state[i] == 2:
count += 1
print(count)